Bir Telegram botunu PythonAnywhere, Replit, Railway ya da bilgisayarınızdan taşımak; dosyalarını kopyalamak, aynı token’ı yapıştırmak, webhook kullanıyorsa polling’e geçirmek ve eski kopya durdurulunca burada başlatmaktır. Token aynı kalır, bu yüzden bot @kullanıcı adını, sohbetlerini ve kullanıcılarını korur. Adımlar:
- Botunuzun yazıldığı dille Telegram için kurulmuş bir bot paketi edinin.
- Dosyalarınızı Files içinde (zip, yükleme, Sıkıştırmayı aç), SFTP ile ya da Git’ten,
requirements.txtya dapackage.jsonile birlikte kopyalayın. - Giriş dosyası ile Çalışma ortamı’nı Bot sayfasında, Kod bölümünde ayarlayın.
- Token’ı Bot sayfasında, Telegram bölümüne yapıştırın ve Bağlan’a tıklayın.
- Diğer ayarlarınızı Ortam bölümündeki .env dosyası yapıştır ile içe aktarın.
- Botunuz webhook kullanıyorsa onu polling’e çevirin.
- Eski kopyayı durdurun, burada Başlat’a basın ve botunuz giriş yapana kadar Console’u izleyin.
Her adım aşağıda açıklanıyor.
Başlamadan önce
- Botun kodunu ve veri dosyalarını (SQLite dosyaları, JSON dosyaları, kayıtlı ayarlar) tek bir klasörde toplayın. Bir barındırıcıdan zip olarak indirin ya da onun dosya tarayıcısından kopyalayın.
- Eski barındırıcının botunuza verdiği her ayarı not edin:
.envdosyasını ya da kontrol panelinde belirlediğiniz değişkenleri. - Eski kopyayı, yenisini başlatmadan hemen önce durdurmayı planlayın. Telegram bir botun yalnızca bir kopyasının mesaj istemesine izin verir: iki kopya birbirini
409 Conflictile dışarı iter.
1. Telegram için kurulmuş bir paket edinin
Telegram bot barındırma sayfasında bir paketin üzerinde Sunucu oluştur’a tıklayın, Botunuz hangi platform için? sorusunu Telegram ile yanıtlayın ve botunuzun dilini seçin: Node.js, Python, Java, C# (.NET), Bun, Deno, Go ya da Rust. Çoğu bot için STARTER (0,5 GB) yeterlidir: ölçtüğümüz bellek için PlayNHost’ta python-telegram-bot ve aiogram karşılaştırmasına bakın.
Discord için kurulmuş bir bot paketiniz zaten var mı? Bot sayfasında, Discord bölümünde, Bu bot ne için? kartında Telegram’ı seçin ve Geç ile onaylayın. Dil yanlış mı? Kod bölümünde Çalışma ortamı yanındaki Çalışanı değiştir’e tıklayın.
2. Dosyaları kopyalayın
- Küçük bot: klasörü zipleyin, zip’i Files içinde yükleyin, işaretleyin ve Sıkıştırmayı aç’a tıklayın.
- Büyük klasör: SFTP kullanın. Files içindeki SFTP bilgileri adresi verir; panel parolanızla giriş yaparsınız.
- GitHub’daki kod: bunun yerine depoyu bağlayın ve yalnızca veri dosyalarınızı yükleyin. Bkz. Botunuzu GitHub’dan nasıl dağıtır ve güncellersiniz.
venv, .venv, __pycache__ ve node_modules klasörlerini dışarıda bırakın: sunucu paketleri kendisi kurar. Buradaki ana klasörünüz /home/container’dır. Kodunuz veri dosyalarını eski barındırıcıdaki tam bir yolla açıyorsa (örneğin /home/yourname/mybot/data.db), onu ana klasöre göre göreli bir yola çevirin. Daha fazlası: Bot kodunuzu nasıl yüklersiniz.
3. Paketler ve giriş dosyası
Eski barındırıcıda paketleri bir konsolda elle kurmuş olabilirsiniz. Burada paketler bir dosyadan gelir:
- Python: her satırda bir paket olan bir
requirements.txt, örneğinpython-telegram-botya daaiogram. İçine kodunuzun içe aktardığı paketlerin adlarını yazın. Başka bir dosya adı ya da klasör mü? Kod bölümündeki Ayarlar kartında Gereksinimler dosyası altında ayarlayın. - Node.js ve Bun:
package.jsondosyanız ve içindekidependenciesbölümü.
Python, Node.js ve Bun’da paketler ilk başlatmada kurulur. Sonrasında yalnızca siz onları değiştirdiğinizde (paket listesi, paket dosyası ya da çalışma ortamı sürümü), node_modules eksik olduğunda ya da günde bir kez yeniden kurulur. Aradaki zamanlarda Console şunu yazar:
[PlayNHost] Packages are up to date. They install again when you change them, or after a day.
Bot sayfasında, Kod bölümünde, Nasıl çalışır kartında Giriş dosyası’nı eski barındırıcının başlattığı dosyaya ayarlayın (örneğin main.py ya da src/index.js; varsayılanlar bot.py ve index.js’tir) ve aynı Çalışma ortamı sürümünü seçin. Değiştirdiğiniz her alanın yanındaki Kaydet düğmesine tıklayın. Dile göre ayrıntılar: Python, Node.js.
4. Token
- Bot sayfasında, Telegram bölümüne botun token’ını yapıştırın ve Bağlan’a tıklayın. Panel onu Telegram ile kontrol eder ve botunuzun @kullanıcı adını gösterir. Kaybettiniz mi? @BotFather’da
/mybotsgönderin, botunuzu seçin, sonra API Token’ı açın. - Kodunuz token’ı
TELEGRAM_BOT_TOKENolarak, ayrıcaBOT_TOKEN,TOKEN,TELEGRAM_TOKENveTELOXIDE_TOKENolarak alır. Kodunuz başka bir ad okuyorsa o satırı bunlardan biriyle değiştirin. - Token kodunuzun ya da bir
config.jsondosyasının içinde yazılıysa onu ortam değişkeniyle değiştirin, örneğin Python’daos.environ["TELEGRAM_BOT_TOKEN"]ya da Node.js’teprocess.env.TELEGRAM_BOT_TOKEN. Yüklediğiniz herhangi bir.envdosyasından silin.
5. Diğer ayarlar
- Ortam bölümünü açın ve .env dosyası yapıştır’a tıklayın.
- Eski
.envdosyanızı ya da eski barındırıcının kontrol panelindeki değişkenleri yapıştırın. Token satırı Atlandı olarak işaretlenir ve şu yazar: Telegram token’ınız Bot sayfasında, Telegram bölümüne girilir, bu yüzden bu satır atlanır. Kodunuz onu TELEGRAM_BOT_TOKEN olarak, ayrıca BOT_TOKEN, TOKEN, TELEGRAM_TOKEN ve TELOXIDE_TOKEN olarak da okur. - Listeyi kontrol edin (gizli değer gibi görünen adlar bir Gizli rozeti alır) ve içe aktarma düğmesine tıklayın, örneğin 3 değişkeni içe aktar.
python-dotenv mu kullanıyorsunuz? Ortam bölümündeki değişkenler zaten os.environ içindedir ve load_dotenv() onların üzerine yazmaz. MySQL veritabanınız mı vardı? Veritabanları sayfasında bir tane oluşturun: Botunuzla veritabanı nasıl kullanılır.
6. Webhook’tan polling’e
Bazı barındırıcılar botu bir webhook ile çalıştırır, örneğin PythonAnywhere’de bir web uygulaması üzerinden. Burada botunuz long polling kullanır: Telegram’dan yeni mesajları ister ve kendi adresine ihtiyaç duymaz. Webhook herkese açık bir HTTPS adresi ister ve bu paketler henüz buna sahip değil. Botunuzun başlangıcını değiştirin:
| Kütüphane | Kaldırın | Kullanın |
|---|---|---|
| python-telegram-bot | application.run_webhook(...) | application.run_polling() |
| aiogram 3 | SimpleRequestHandler ile aiohttp web uygulaması | await dp.start_polling(bot) |
| pyTelegramBotAPI | bot.set_webhook(...) ve Flask rotası | bot.infinity_polling() |
| grammY | webhookCallback(bot, ...) | bot.start() |
| Telegraf | bot.launch({ webhook: ... }) | bot.launch() |
Eski barındırıcıda botu yalnızca uyanık tutan küçük bir web sunucusuna burada gerek yoktur: bot her zaman çalışır.
Webhook, bir şey onu kaldırana kadar botunuzda Telegram tarafında ayarlı kalır. python-telegram-bot ve grammY polling başlarken onu kendileri kaldırır. Başka kodlarda Telegram bölümü Bu botta bir webhook ayarlı gösterir: Webhook’u kaldır’a tıklayın ve onaylayın. Bekleyen mesajlar saklanır, böylece botunuz onları burada alır.
7. Geçişi yapın
- Botu eski barındırıcıda durdurun: PythonAnywhere’de sürekli çalışan ya da zamanlanmış bir görev, Replit ya da Railway’de bir dağıtım ya da bilgisayarınızdaki terminal penceresi ya da betik.
- Burada Başlat’a basın ve botunuz giriş yapana kadar Console’u izleyin. Hazır olduğunda
Logged in as @your_botgibi bir satır yazdırın: Genel bakış sayfasındaki rozet o zaman Telegram’da çevrimiçi’ye döner. - Botunuza Telegram’da bir komut gönderin. Sonra eski barındırıcıyı iptal edin.
Bir şey çalışmazsa
- Konsolun üstünde Botunuz başka bir yerde de çalışıyor: eski kopya hâlâ çalışıyor. Onu durdurun, sonra burada yeniden başlatın. Bkz. Telegram botu 409 Conflict hatasını düzeltin.
- Botunuzda bir webhook ayarlı: Webhook’u kaldır’a tıklayın, sonra yeniden başlatın.
- Yanlış bir dosya adı, yanlış bir dil ya da eksik bir paket konsolun ilk saniyelerinde, çoğu zaman bir uyarı olarak görünür. Bkz. Botunuz neden sürekli duruyor.
- Bot başlıyor ama verilerini kaybetmiş: veri dosyalarının aynı klasör yapısını koruduğunu ve kodunuzun onları
/home/container’a göre göreli bir yolla açtığını kontrol edin.



