İçeriğe geç

Çözümler · Botlar

Telegram botu için VPS

Bir bot boştayken yüz megabaytın altında kalır ve ömrünü beklemekle geçirir; bu yüzden makine neredeyse hiçbir zaman kısıt olmaz: ayda $6.90 fiyatlı U1-1 bir botu düzgünce çalıştırır. Faturanızı asıl belirleyen medyadır ve kendi Bot API sunucunuzu çalıştırıp çalıştırmadığınızdır. İkisi de hesap meselesidir ve ikisi de aşağıda.

Kararın altındaki karar

Webhook mu long polling mi

Botunuzun bir alan adına, sertifikaya ve açık bir porta ihtiyaç duyup duymadığını plan değil, bu belirler.

Long polling

Botunuz dışarıya, Telegram'a bağlanır ve güncellemeleri bekler. Alan adı yok, TLS sertifikası yok, internete açık port yok; NAT arkasında çalışır. Bir şeyi çalışır hâle getirmenin en hızlı yoludur ve çoğu bot için kalıcı olarak da gayet iyi bir çözümdür.

Webhook

Telegram size bağlanır. Herkese açık bir adres, geçerli bir sertifika ve açık bir port gerekir (buradaki her plan bunları sağlar); karşılığında bir yoklama döngüsü olmaz ve gerçek yük altında daha iyi ölçeklenir. Yük veya gecikme gerektirdiğinde geçin, daha önce değil.

Hesap

Bir planın gerçekte kaç bot taşıdığı

Botlar = (RAM − 300 MB işletim sistemi) ÷ bir botun kullandığı bellek. İki sütun, durumsuz bir komut botu ile ORM, zamanlayıcı ve önbellek taşıyan bir botu gösterir.

Her plan için bot süreci kapasitesi ve aylık trafik kotası, canlı fiyatlarla
PlanRAMHafif botlarAğır botlarTrafikFiyatOluştur
U1-1Tek bot, her büyüklükte kitle1 GB124Unmetered$6.90Oluştur
C1-1-25Tek bot, ölçümlü ama ucuz1 GB1241 TB$9.90Oluştur
GL2-4Birden fazla bot veya veritabanlı bir bot4 GB6325Unmetered$11.90Oluştur
BD-8Kendi barındırdığınız bir Bot API sunucusu8 GB1315232 TB$12.90Oluştur

Botunuzun kullanıcı sayısı bu hesapta yer almaz, çünkü sorunun parçası değildir: Telegram her kullanıcı için bir bağlantı açmak yerine güncellemeleri işleminize tek tek iletir. Cevabı değiştiren, kendinizin tuttuğu durumdur: büyük bir önbellek, işlem içi bir veritabanı, bir model.

Faturayı belirleyen sayı

Bellek değil, medya

Ortalama dosya boyutu × günlük mesaj × 30. İki yön de sayılır: alınan bir dosya da trafiktir.

Günde yüz, beş bin ve elli bin mesajda mesaj türüne göre aylık trafik
Botun taşıdıkları100/gün5,000/gün50,000/gün
Yalnızca metinBir komut ve bir yanıt. Pratikte bedava.< 1 GB< 1 GB3 GB
FotoğraflarGönderilen ve alınan sıkıştırılmış bir görsel.< 1 GB44 GB439 GB
Sesli notlar ve kısa videolarBir topluluk botunun olağan yükü.9 GB439 GB4.3 TB
Belgeler ve uzun videolarSıradan bir bot için Telegram'ın kendi indirme sınırı.59 GB2.9 TB28.6 TB

Makineyi değiştiren tek şey

Genel Bot API'yi kullanan bir bot 20 MB'a kadar dosya indirebilir ve 50 MB'a kadar yükleyebilir (bunlar bizim değil, Telegram'ın sınırlarıdır) ve dosyalar diskinize hiç dokunmaz. Kendi Bot API sunucunuzu çalıştırırsanız tavan 2 GB olur ve her dosya sunucunuza iner. Disk ve trafiğin önemsiz olmaktan çıktığı nokta budur: BD-8, $12.90 karşılığında 100 GB SSD ve 32 TB sunar; uygun yapı budur. Bunu yapmıyorsanız, bunun için ödeme yapmayın.

Dürüstçe

Gerçekte ne alırdık

Biz de bir Telegram botu çalıştırıyoruz. Onu koyacağımız makine bu.

Tek bir bot için

U1-1 · $6.90/ay

1 çekirdek, 1 GB, 15 GB SSD ve trafik sayacı yok; böylece beklenmedik şekilde medya taşımaya başlayan bir bot beklemediğiniz bir fatura çıkaramaz. Botu Restart=always ile systemd altına koyun; geriye çökmesi için tek yol kendi kodunuz kalır. Makine size yetmez hâle gelirse botu taşımak bir dizini ve bir token'ı kopyalamaktır.

Sorular

Satın almadan önce sorulanlar.

Bir Telegram botu ne kadar RAM gerektirir?
Genellikle satıldığından çok daha az. Bot, zamanının neredeyse tamamını beklemekle geçiren uzun ömürlü bir süreçtir: durumsuz bir komut botu yaklaşık 60 MB kullanır, ORM, zamanlayıcı ve önbellek taşıyan bir bot ise 150 MB'a yakındır. İşletim sistemi yaklaşık 300 MB'ını aldıktan sonra, 1 GB'lık bir makinede hâlâ 4 ağır veya 12 hafif bot için yer vardır. KULLANICI sayısı neredeyse hiç etkilemez, çünkü Telegram güncellemeleri kullanıcı başına bir bağlantıyla değil, sürecinize tek tek iletir. Cevabı değiştiren, bellekte kendiniz tuttuğunuz durumdur: büyük bir önbellek, süreç içi bir veritabanı, bir model.
Webhook mu long polling mi?
Başlangıçta long polling, önemli hale geldiğinde webhook. Long polling ile botunuz Telegram'a dışarı doğru bir bağlantı açar ve bekler: alan adı, sertifika veya açık port gerekmez; bu da NAT arkasında çalıştığı ve bir şeyi çalışır hale getirmenin en hızlı yolu olduğu anlamına gelir. Webhook'ta ise Telegram SİZE bağlanır; bu yüzden herkese açık bir adres, geçerli bir TLS sertifikası ve internete açık bir port gerekir; karşılığında polling döngüsünü tamamen ortadan kaldırır ve bot gerçekten yoğun olduğunda daha iyi ölçeklenir. İkisi de buradaki en küçük makinede sorunsuz çalışır. Geçiş yapmanın dürüst nedeni moda değil, yük veya gecikmedir.
Dosya boyutu sınırları nelerdir?
Bunlar bizim değil, Telegram'ın sınırları: herkese açık Bot API'yi kullanan bir bot 20 MB'a kadar dosya indirebilir ve 50 MB'a kadar yükleyebilir. Kendi Bot API sunucunuzu çalıştırmak bu sınırı 2 GB'a çıkarır ve daha da önemlisi dosyaların Telegram'ın diskinden geçmek yerine sizin sunucunuzun diskine inmesini sağlar. İhtiyacınız olan makineyi gerçekten değiştiren tek değişiklik budur: bir anda disk ve trafik önem kazanır; yukarıdaki tablonun BD-8 planını diğer satırların değil bu satırın karşısına koymasının nedeni de budur.
Bant genişliğim tükenir mi?
Metin botu, asla. Medya botu, olabilir ve otuz saniyelik bir hesaba değer: ortalama dosya boyutu × günlük mesaj × 30. Günde 3 MB'lık elli bin sesli mesaj ayda yaklaşık 4.3 TB eder; bu, çoğu ucuz plandaki kotayı aşar ama BD-8 üzerindeki 32 TB'a yaklaşmaz bile; sorunun hiç doğmadığı Unmetered serisini saymıyoruz. İki yön de sayılır: botunuzun aldığı dosya da gönderdiği dosya da trafiktir.
Terminali kapattıktan sonra botu nasıl çalışır durumda tutarım?
Bir screen oturumu değil, bir systemd birimi. Restart=always içeren küçük bir servis dosyası yazın, etkinleştirin; bot bir çökmeden ve yeniden başlatmadan sonra siz uyanık olmadan geri gelir. Bir botun VPS'te "çökmesinin" en yaygın tek nedeni budur ve bu bir barındırma sorunu değildir: elle başlatılan bir süreç, onu başlatan SSH oturumuyla birlikte ölür. Bu şekilde paketlemeyi tercih ederseniz, yeniden başlatma politikalı Docker da aynı işi görür.
Bir sunucuda birden fazla bot çalıştırabilir miyim?
Evet, ve çoğu kişi bunu yapmalı. Her biri kendi systemd birimi ve kendi token'ı olan ayrı bir işlemdir; makineyi, isterseniz veritabanını paylaşırlar, başka hiçbir şeyi değil. Tablodaki hesap tam olarak bu sorudur: 4 GB'lık bir makine, bellek kısıt hâline gelmeden önce 25 ağır botu kaldırır. Farklı kişiler içinse onları ayrı portlarda ve ayrı kullanıcılar altında tutun.
Bot hangi bölgede çalışmalı?
Kullanıcılarınızın erişebildiği ve Telegram'a gecikmenizin makul olduğu her yer: bot doğrudan kullanıcılarınızla değil, Telegram'ın altyapısıyla konuşur; bu yüzden olağan "kitlenize yakın olun" kuralı burada bir web sitesine göre daha az önemlidir. Bot aynı kullanıcılara bir web paneli veya API de sunuyorsa, bölgeyi buna göre seçin. Emin değilseniz, iki bölgede saat bazında oluşturun, ölçün ve kaybedeni silin: saatte $0.0113 bunu ucuz bir deney yapar.