Discord botunuzda uzun süreli işlemler (örneğin, veri tabanı bağlantıları, WebSocket bağlantıları) açık kalırsa, normal çıkış
Bu, işlem kapatılmadan önce gerekli temizlik adımlarını gerçekleştirir.
2.
Eğer doğrudan çıkmak zorundaysanız:
Ancak, burada bağlantıların kapanmasını beklemek için yukarıdaki sinyal yakalama bloğu mutlaka aktif olmalıdır.
Bu adımlar, Discord botunuzun kapanma sırasında veri kaybı veya bağlantı hatası yaşaması riskini azaltır. Botunuzda kullandığınız kütüphanelere göre (ör.
process.exit() komutuyla aniden kapanışa yol açabilir. Aşağıda, botunuzu güvenli bir şekilde kapatmak için kullanılabilecek yöntemler listelenmiştir.1. Sinyal Yakalama
JavaScript:
const shutdown = () => {
console.log('Bot kapanıyor...');
// Bağlantıları kapat
client.destroy(); // Discord.js için
db.close(); // Veritabanı (örneğin, pg, mongoose)
process.exit(0);
};
process.on('SIGINT', shutdown); // Ctrl+C
process.on('SIGTERM', shutdown); // systemd / pm2 tarafından gönderilen sinyal
2. process.exit() Kullanımı
Eğer doğrudan çıkmak zorundaysanız:
JavaScript:
process.exit(0); // Uygun exit kodu ile
3. İşlem Yöneticisi (pm2) ile Otomatik Kapanma
pm2 start index.js --name mybot- Botu kapatmak için
pm2 stop mybotkomutu, pm2’nin sinyal göndererek graceful shutdown yapmasını sağlar. pm2 restart mybotkomutu, kapanma sürecini aynı şekilde yönetir.
4. Systemd ile Hizmet Olarak Çalıştırma
/etc/systemd/system/mybot.service içinde:
INI:
[Service]
ExecStart=/usr/bin/node index.js
Restart=on-failure
KillMode=control-group
systemctl stop mybot komutu, systemd’nin SIGTERM sinyalini göndererek yukarıdaki sinyal yakalama bloğunu tetikler.5. Yedekleme ve Test
Kapanma adımlarını üretim ortamında denemeden önce:- Yerel ortamda
node index.jsile botu başlatıpCTRL+Cile durdur. - Bağlantıların düzgün kapanıp kapanmadığını kontrol edin (ör. veritabanı logları).
- Üretimde,
pm2 logsile kapanma sürecini izleyin.
Bu adımlar, Discord botunuzun kapanma sırasında veri kaybı veya bağlantı hatası yaşaması riskini azaltır. Botunuzda kullandığınız kütüphanelere göre (ör.
discord.js, eris) destroy veya disconnect metodlarını da aynı şekilde çağırmanız gerekebilir.