Eggdrop

Eggdrop Python Modülü: Tcl Yerine Python ile Script Yazmak

· Güncelleme: · 5 dk okuma

Eggdrop Python Modülü: Tcl Yerine Python ile Script Yazmak
İçindekiler
  1. Python Modülü Ne Sunar?
  2. Gereksinimler
  3. Modülü Etkinleştirmek
  4. Python ile Bir Bind Yazmak
  5. Tcl Komutlarına Erişim
  6. Tcl mi, Python mı?
  7. Dikkat Edilecekler
  8. Gerçek Bir Senaryo
  9. Python Scriptlerini Düzenlemek
  10. Topluluk ve Belgeler
  11. Sonuç

Eggdrop on yıllardır Tcl ile scriptlenir. Tcl küçük, tutarlı ve öğrenmesi kolay bir dildir, ancak günümüzde çok az geliştiricinin günlük olarak kullandığı bir dil hâline geldi. Yeni nesil bot yazarlarının çoğu Python biliyor ve Python'un devasa kütüphane ekosisteminden yararlanmak istiyor. Eggdrop geliştiricileri bu ihtiyaca cevap olarak Eggdrop Python modülünü geliştirdi. Bu modül sayesinde Eggdrop scriptlerini Python ile yazabilir, Tcl ile Python'u aynı botta bir arada kullanabilirsiniz.

Python Modülü Ne Sunar?

  • Tanıdık bir dil: Python bilen biri Tcl öğrenmeden script yazmaya başlayabilir.
  • Zengin kütüphaneler: Web API'lerine bağlanmak, JSON işlemek, veritabanlarıyla çalışmak gibi işler Python'un standart kütüphanesi ve paket ekosistemiyle çok daha kolaydır.
  • Modern araçlar: Python için geliştirilmiş editörler, hata ayıklayıcılar ve test araçları kullanılabilir.
  • Tcl ile birlikte çalışma: Mevcut Tcl scriptlerinizi bırakmadan yeni özellikleri Python ile ekleyebilirsiniz.

Gereksinimler

Python modülünü kullanmak için:

  1. Python desteği sunan bir Eggdrop sürümü (1.10 ailesi ve sonrası),
  2. Sistemde uygun bir Python 3 sürümü ve geliştirme dosyaları,
  3. Eggdrop'un bu dosyalar mevcutken derlenmiş olması.

Debian veya Ubuntu tabanlı sistemlerde Python geliştirme dosyaları genellikle python3-dev paketiyle gelir. Derleme sırasında configure çıktısında Python desteğinin bulunduğunu doğrulayın. Destek bulunamazsa modül derlenmez. Kurulum adımları için Eggdrop kurulumu, mevcut bir botu yeni sürüme taşımak için sürüm yükseltme yazılarımıza bakın.

Modülü Etkinleştirmek

eggdrop.conf'ta modülü yükleyin:

loadmodule python

Ardından Python scriptlerini yüklemek için modülün sağladığı komut kullanılır. Tcl scriptleri source ile yüklenirken Python scriptleri için ayrı bir yükleme komutu bulunur. Komutun tam adı ve kullanımı, sürümünüzle gelen belgelerde ve örnek yapılandırma dosyasında açıklanır. Belgelerdeki örnekleri temel almanızı öneririz, çünkü modül görece yeni olduğu için ayrıntılar sürümden sürüme değişebilir.

Python ile Bir Bind Yazmak

Python modülü, Tcl'deki bind mantığını Python'a taşır. Bir olay türü, bayrak kısıtlaması, tetikleyici ve çağrılacak bir Python fonksiyonu tanımlarsınız. Kavramsal olarak basit bir komut şöyle görünür:

from eggdrop import bind
from eggdrop.tcl import putmsg

def selam(nick, host, handle, channel, text, **kwargs):
    putmsg(channel, f"Merhaba {nick}!")

bind("pub", "*", "!selam", selam)

Bu örnekteki modül ve fonksiyon adları, Python modülünün belgelerindeki yaklaşımı yansıtan bir taslaktır; kendi sürümünüzün belgelerindeki örneklerle karşılaştırarak kullanın. Temel fikir değişmez: Olay gerçekleştiğinde fonksiyonunuz çağrılır ve parametre olarak olayın ayrıntılarını alır. Tcl'deki bind türlerini ve parametrelerini Tcl bind komutları yazımızda anlattık; Python tarafında da aynı türler kullanılır.

Tcl Komutlarına Erişim

Python modülünün güçlü yanlarından biri, Eggdrop'un Tcl komutlarına Python'dan erişebilmenizdir. Kanal listesini almak, bir kullanıcının bayraklarını kontrol etmek veya kanala mod göndermek gibi işler için Eggdrop'un yıllar içinde olgunlaşmış Tcl komut setini Python'dan çağırabilirsiniz. Bu, Python scriptlerinizin Eggdrop'un bütün yeteneklerinden yararlanabileceği anlamına gelir.

Tcl mi, Python mı?

KonuTclPython
OlgunlukOnlarca yıllık deneyim, binlerce hazır scriptGörece yeni
ÖğrenmeKüçük dil, kısa sürede öğrenilirPek çok kişi zaten biliyor
KütüphanelerSınırlıÇok geniş
Hazır script bulmaÇok kolayDaha az örnek
BelgelerKapsamlıGelişmekte
KurulumVarsayılan olarak gelirEk derleme gereksinimi

Pratik bir öneri: Kanal yönetimi, koruma ve basit komutlar gibi klasik işler için Tcl kullanmaya devam edin; bu alanda hazır, denenmiş scriptler bolca mevcuttur. Web API'lerine bağlanan, karmaşık veri işleyen veya dış servislerle konuşan yeni özellikler için ise Python'u tercih edin.

Dikkat Edilecekler

  • Engelleyici işlemlerden kaçının: Eggdrop tek iş parçacıklı bir olay döngüsüyle çalışır. Bir Python fonksiyonu uzun süren bir ağ isteği yaparken botun geri kalanı bekler. Uzun işlemleri kısa tutun veya zaman aşımı koyun.
  • Kullanıcı girdisini doğrulayın: Python'da da kullanıcıdan gelen metni komut çalıştırmak veya dosya yolu oluşturmak için doğrudan kullanmayın.
  • Bağımlılıkları belgeleyin: Scriptiniz harici paketler kullanıyorsa bunları scriptin başında belirtin.
  • Hataları yakalayın: Yakalanmayan bir istisna scriptinizin çalışmasını durdurabilir; hataları loglayın.
  • Sürüm uyumluluğuna dikkat edin: Modül gelişmeye devam ettiği için Eggdrop'u yükselttiğinizde Python scriptlerinizi test edin.

Güvenlik konusunda genel öneriler için Eggdrop güvenliği yazımıza bakın.

Gerçek Bir Senaryo

Bir yazılım topluluğu, kanalda proje deposundaki yeni sürümleri duyuran bir bot istiyor. Tcl ile web API'sine bağlanıp JSON cevabını işlemek mümkün ama zahmetli. Topluluğun gönüllülerinden biri Python biliyor. Botu Python desteğiyle yeniden derliyorlar ve on beş dakikada bir API'yi kontrol eden, yeni sürüm bulduğunda kanala duyuru yapan kısa bir Python scripti yazıyorlar. Ağ isteğine birkaç saniyelik zaman aşımı koyarak botun kilitlenmesini önlüyorlar. Kanalın mevcut Tcl scriptleri ise değişmeden çalışmaya devam ediyor.

Python Scriptlerini Düzenlemek

Python ile yazılan scriptler zamanla büyüyebilir. İyi bir alışkanlık, her özelliği ayrı bir dosyada tutmak ve ortak yardımcı fonksiyonları tek bir modülde toplamaktır. Ayarları, örneğin API adreslerini, kanal adlarını ve zaman aşımı sürelerini, kodun içine gömmek yerine scriptin başında sabitler olarak tanımlayın. Böylece scripti başka bir bota taşırken yalnızca birkaç satırı değiştirmeniz yeterli olur. Harici bir servise bağlanan scriptlerde API anahtarları gibi gizli bilgileri kodun içinde değil, izinleri sıkı tutulan ayrı bir dosyada saklayın.

Python ekosisteminin bir avantajı da test yazmanın kolay olmasıdır. Mesaj işleyen fonksiyonlarınızı Eggdrop'tan bağımsız, saf fonksiyonlar olarak yazarsanız bunları botu çalıştırmadan, bilgisayarınızda test edebilirsiniz. Örneğin bir komutun kullanıcı metnini nasıl ayrıştırdığını veya bir API cevabını nasıl biçimlendirdiğini küçük testlerle doğrulamak, canlı botta hata ayıklamaktan çok daha hızlıdır.

Topluluk ve Belgeler

Python modülü görece yeni olduğu için hazır örneklerin sayısı Tcl dünyasına göre azdır. Eggdrop'un resmî belgeleri ve kaynak kodla gelen örnek scriptler en güvenilir başlangıç noktasıdır. Yeni bir şey denediğinizde öğrendiklerinizi kısa notlar hâlinde paylaşmak, topluluğun bu alandaki birikiminin büyümesine katkı sağlar.

Sonuç

Python modülü, Eggdrop'a modern bir script dili ve geniş bir kütüphane ekosistemi kazandırıyor. Tcl'i bırakmanız gerekmiyor; iki dili birlikte kullanarak her işi en uygun araçla yapabilirsiniz. Python desteği için güncel bir sürüm gerektiğinden, sıradaki rehberimiz Eggdrop sürüm yükseltme.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

Python modülü Tcl'in yerini mi alıyor?

Hayır. Tcl, Eggdrop'un ana script dili olmaya devam ediyor. Python modülü ek bir seçenek olarak sunuluyor.

Python modülü hangi sürümle geldi?

Python desteği Eggdrop'un 1.10 sürüm ailesiyle birlikte sunulmaya başlandı. Ayrıntılar için kullandığınız sürümün belgelerine bakın.

Python scriptleri Tcl scriptleriyle birlikte çalışabilir mi?

Evet. Aynı bot hem Tcl hem de Python scriptleri yükleyebilir; Python tarafından Tcl komutlarına erişim de mümkündür.