Eggdrop

Eggdrop Karşılama Scripti: Kanala Gelenleri Hoş Mesajla Karşılamak

· Güncelleme: · 5 dk okuma

Eggdrop Karşılama Scripti: Kanala Gelenleri Hoş Mesajla Karşılamak
İçindekiler
  1. Yerleşik Greet Özelliği
  2. Basit Bir Karşılama Scripti
  3. Notice mı, Kanal Mesajı mı, Özel Mesaj mı?
  4. Kanal Bazlı Mesajlar
  5. Tekrar Girişleri Atlamak
  6. Flood Sırasında Susmak
  7. İyi Bir Karşılama Mesajı Nasıl Yazılır?
  8. Gerçek Bir Senaryo
  9. Saat ve Güne Göre Değişen Mesajlar
  10. Mesajı Partyline'dan Değiştirmek
  11. Sonuç

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öntemAvantajıDezavantajı
NOTICEYalnızca gelen kişi görür, sohbeti bölmezBazı istemciler notice'ları ayrı pencerede gösterir
Kanal mesajıHerkes yeni geleni fark ederKalabalık kanallarda sohbeti böler, flood'a dönüşebilir
Özel mesaj (PRIVMSG)Kişisel hissettirirYeni 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:

  1. Son dakikada kaç karşılama gönderildiğini sayın ve belirli bir eşiği aşınca karşılamayı geçici olarak durdurun.
  2. Karşılamaları puthelp kuyruğuyla gönderin; bu kuyruk düşük önceliklidir ve botun önemli komutlarını engellemez.
  3. Kanal +i veya +m gibi 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ğlan

Sı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.