Eggdrop Karşılama Scripti: Kanala Gelenleri Hoş Mesajla Karşılamak
İçindekiler
Bir kanala ilk kez giren biri için ilk birkaç saniye önemlidir. Kimse selam vermezse, kanalın ne hakkında olduğu anlaşılmazsa, kurallar bir yerde yazılmamışsa çoğu kişi birkaç dakika sonra sessizce ayrılır. Kısa ve sıcak bir karşılama mesajı bu durumu değiştirebilir. Eggdrop karşılama scripti, kanala giren her kişiye otomatik olarak bir hoş geldin mesajı gönderir; doğru yazıldığında kanalın havasını iyileştirir, yanlış yazıldığında ise rahatsız edici bir spam kaynağına dönüşür. Bu rehberde ikisinin arasındaki farkı yaratan ayrıntıları anlatıyoruz.
Yerleşik Greet Özelliği
Eggdrop'un kendi içinde, kayıtlı kullanıcılar kanala girdiğinde onların "info" satırını kanala gösteren bir özellik vardır. Kullanıcılar kendi info satırlarını belirleyebilir ve kanal +greet olarak işaretlendiğinde bot bu satırı gösterir:
.chanset #kanal +greet
Bu özellik, botun tanıdığı kişilerin gelişini kanala duyurmak için tasarlanmıştır. Ancak yeni gelen, botun tanımadığı ziyaretçilere bir şey söylemez. Genel bir karşılama için script yazmanız veya hazır bir script kullanmanız gerekir.
Basit Bir Karşılama Scripti
En basit hâliyle bir karşılama scripti, join bind'i ve bir notice'tan oluşur:
setudef flag karsila
set karsila_mesaj "Hos geldin! Kurallar icin !kurallar yazabilirsin."
bind join - * karsila_join
proc karsila_join {nick uhost hand chan} {
global karsila_mesaj
if {[isbotnick $nick]} { return 0 }
if {![channel get $chan karsila]} { return 0 }
puthelp "NOTICE $nick :$karsila_mesaj"
return 0
}
Partyline'da scriptin çalışacağı kanalı işaretleyin:
.chanset #kanal +karsila
Scriptin parçalarının anlamlarını Tcl bind komutları ve ilk Tcl scriptiniz yazılarımızda ayrıntılı anlattık. Burada dikkat edilmesi gereken iki nokta var: isbotnick kontrolü, botun kendi girişinde kendine mesaj göndermesini önler; channel get kontrolü ise scriptin yalnızca işaretlenmiş kanallarda çalışmasını sağlar.
Notice mı, Kanal Mesajı mı, Özel Mesaj mı?
Karşılama mesajının nasıl gönderileceği, kanalın havasını doğrudan etkiler:
| Yöntem | Avantajı | Dezavantajı |
|---|---|---|
| NOTICE | Yalnızca gelen kişi görür, sohbeti bölmez | Bazı istemciler notice'ları ayrı pencerede gösterir |
| Kanal mesajı | Herkes yeni geleni fark eder | Kalabalık kanallarda sohbeti böler, flood'a dönüşebilir |
| Özel mesaj (PRIVMSG) | Kişisel hissettirir | Yeni bir pencere açar, bazı kullanıcılar rahatsız olur; bazı ağlar özel mesajları kısıtlar |
Çoğu kanal için notice en dengeli seçimdir. Kanal mesajı yalnızca çok sakin kanallarda, gelenlerin herkesçe fark edilmesinin istendiği durumlarda mantıklıdır. NOTICE ve PRIVMSG arasındaki farklar için IRC notice ve IRC msg ve query yazılarımıza bakabilirsiniz.
Kanal Bazlı Mesajlar
Bot birden fazla kanalda bulunuyorsa her kanal için farklı bir mesaj isteyebilirsiniz. Bunun için kanal adını anahtar olarak kullanan bir dizi işinizi görür:
set karsila_msg(#destek) "Destek kanalina hos geldin! Sorunu tek mesajda yaz, birisi yardimci olacak."
set karsila_msg(#sohbet) "Hos geldin! Keyifli sohbetler."
Prosedür içinde kanal adını küçük harfe çevirip dizide bu anahtarın olup olmadığına bakar, varsa o mesajı, yoksa varsayılan mesajı gönderirsiniz. Mesajda kullanıcının nickini kullanmak kişisel bir dokunuş katar: "Hoş geldin Ayşe!" gibi.
Tekrar Girişleri Atlamak
Bağlantısı sık kopan bir kullanıcı gün içinde kanala onlarca kez girip çıkabilir. Her girişinde aynı karşılama mesajını görmek can sıkıcıdır. Çözüm, kullanıcının son karşılanma zamanını saklamak ve belirli bir süre, örneğin 12 saat, geçmeden tekrar karşılamamaktır. Bunun için host bilgisini veya küçük harfe çevrilmiş nicki anahtar olarak kullanabilirsiniz. Host bilgisini kullanmak, kişi farklı bir nickle gelse bile tanınmasını sağlar. Kayıtları belirli aralıklarla temizlemek de belleğin gereksiz şişmesini önler.
Kayıtlı kullanıcıları hiç karşılamamak da bir seçenektir. Botun listesinde bulunan biri büyük olasılıkla kanalı zaten tanıyordur. Prosedürde hand parametresinin * olup olmadığına bakarak bunu kolayca kontrol edebilirsiniz.
Flood Sırasında Susmak
Bir flood saldırısında yüzlerce bot kanala art arda girebilir. Karşılama scriptiniz bu durumda her birine mesaj göndermeye çalışırsa iki sorun ortaya çıkar: Botun mesaj kuyruğu dolar ve önemli işler gecikir; daha kötüsü, sunucu botu "Excess Flood" ile düşürebilir. Bunu önlemek için:
- Son dakikada kaç karşılama gönderildiğini sayın ve belirli bir eşiği aşınca karşılamayı geçici olarak durdurun.
- Karşılamaları
puthelpkuyruğuyla gönderin; bu kuyruk düşük önceliklidir ve botun önemli komutlarını engellemez. - Kanal
+iveya+mgibi koruma modlarına geçtiğinde karşılamayı tamamen kapatın.
Kanal koruması hakkında kapsamlı bilgi için kanal koruması yazımıza bakın.
İyi Bir Karşılama Mesajı Nasıl Yazılır?
Teknik ayrıntılar kadar mesajın içeriği de önemlidir:
- Kısa tutun: Tek satır, en fazla iki cümle.
- Kanalın amacını söyleyin: "mIRC script yardımı kanalına hoş geldin" gibi.
- Bir sonraki adımı gösterin: "Sorunu tek mesajda yaz" veya "!kurallar yaz" gibi.
- Renk ve sembol abartısından kaçının: Bazı istemciler renkleri farklı gösterir veya hiç göstermez.
- Sabırlı olmayı hatırlatın: Destek kanallarında "Cevap birkaç dakika sürebilir" demek, kullanıcının hemen ayrılmasını önler.
Gerçek Bir Senaryo
Bir destek kanalında yeni gelenlerin büyük kısmı "merhaba" yazıp kimse hemen cevap vermeyince ayrılıyor. Kanal yönetimi bir karşılama scripti ekliyor: Yeni gelenlere notice ile "Hoş geldin! Sorununu ayrıntılarıyla tek mesajda yaz, gönüllülerimiz genellikle birkaç dakika içinde cevap veriyor" mesajı gönderiliyor. Kayıtlı kullanıcılar karşılanmıyor, aynı host 24 saat içinde ikinci kez karşılanmıyor ve dakikada beşten fazla giriş olduğunda script susuyor. Birkaç hafta içinde kanalda soruların daha açık sorulduğu ve kullanıcıların cevap gelene kadar daha uzun beklediği gözlemleniyor.
Saat ve Güne Göre Değişen Mesajlar
Karşılama mesajını biraz daha canlı hâle getirmenin bir yolu, mesajı günün saatine göre değiştirmektir. Sabah gelenlere "Günaydın", akşam gelenlere "İyi akşamlar" demek küçük ama hoş bir dokunuştur. Bunun için prosedür içinde o anki saati okuyup birkaç basit koşulla uygun selamı seçmek yeterlidir. Benzer şekilde hafta sonları düzenlenen etkinlikleri duyurmak veya özel günlerde farklı bir mesaj göstermek de mümkündür. Ancak bu tür eklemeleri abartmamak gerekir; mesaj ne kadar karmaşıklaşırsa bakımı o kadar zorlaşır ve hata ihtimali artar. Basit ve düzenli güncellenen tek bir mesaj, çoğu zaman karmaşık bir sistemden daha etkilidir.
Mesajı Partyline'dan Değiştirmek
Karşılama metnini her değiştirmek istediğinizde script dosyasını düzenleyip rehash yapmak zahmetlidir. Küçük bir dcc bind'i ekleyerek mesajı partyline'dan değiştirmeyi mümkün kılabilirsiniz. Değişikliğin kalıcı olması için yeni mesajı küçük bir dosyaya yazmak ve script yüklenirken bu dosyadan okumak yeterlidir.
Sonuç
İyi bir karşılama scripti görünmez bir ev sahibi gibidir: Yeni geleni nazikçe selamlar, ne yapacağını söyler ve sonra kenara çekilir. Notice kullanın, kanal bazlı mesajlar yazın, tekrar girişleri atlayın ve flood sırasında susun. Botunuzun neler yaptığını kayıt altına almak için sıradaki rehberimiz log ayarları.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Karşılama mesajı kanala mı yoksa notice ile mi gönderilmeli?
Genellikle notice önerilir. Kanala gönderilen karşılamalar kalabalık kanallarda sohbeti böler ve flood'a yol açabilir.
Aynı kişinin her girişinde karşılanmasını nasıl önlerim?
Kullanıcının son karşılanma zamanını saklayıp belirli bir süre geçmeden tekrar karşılamamak yeterlidir.
Eggdrop'un yerleşik karşılama özelliği var mı?
Evet, kayıtlı kullanıcıların info satırlarını gösteren greet özelliği vardır. Ancak herkesi karşılamak için genellikle script kullanılır.


