IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
3Beğeni(ler)
  • 2 Post By saywhat
  • 1 Post By saywhat

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 20 Eylül 2014, 04:21   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
eggdrop invite / davet sorgusu




bu : " 00:46:51 < AlphaTech > Script Request: Can someone please make me a script that has the bot join on /invite
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
"
istek üzerine yapılıp ,sonradan Türkçe çevirisi yapılmıştır....

ne iş yapar ? : bot'a gelen "invite" kanala davet'leri ,bot sahibine notice olarak iletir.bot sahibi onay komutu verirse ,davet edilen kanala girilir. red komutu verildiğinde davet yok sayılır/silinir.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind raw - "INVITE" inv_join bind msg n "!tamam" accept_inv bind msg n "!olmaz" reject_inv proc inv_join {from key arg} { set ::targetchan [lindex [split $arg ":"] 1] putserv "notice $::owner :$from tarafından, $::targetchan kanalına davet edildim." putserv "notice $::owner :daveti kabul etmek için: /msg $::botnick !tamam" putserv "notice $::owner :daveti red etmek için: /msg $::botnick !olmaz" return 0 } proc reject_inv {nick uhost hand text} { if {[info exists ::targetchan]} { unset ::targetchan putserv "notice $::owner :Red edildi .." return 1 } return 0 } proc accept_inv {nick uhost hand text} { if {[info exists ::targetchan]} { channel add $::targetchan putserv "notice $::owner :Kanala girildi .." unset ::targetchan return 1 } return 0 }


 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 20 Eylül 2014, 18:33   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: eggdrop invite / davet sorgusu




Sadece öneri olarak;

bind msg n "!tamam" accept_inv
bind msg n "!olmaz" reject_inv

bunları direkt tanıtacağına, davet geldiğinde tanıtsan yani;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind raw - "INVITE" inv_join proc inv_join {from key arg} { set ::targetchan [lindex [split $arg ":"] 1] putserv "notice $::owner :$from tarafından, $::targetchan kanalına davet edildim." putserv "notice $::owner :daveti kabul etmek için: /msg $::botnick !tamam" putserv "notice $::owner :daveti red etmek için: /msg $::botnick !olmaz" bind msg n "!tamam" accept_inv bind msg n "!olmaz" reject_inv return 0 }

gibi, daha iyi olmaz mı yani targetchan sorgusuyla kontrol ettirmek yerine burda bind yapıp diğer procların altında artık unbind midir ne ise o şekilde sildirmek gibi

Çünkü mesela atıyorum !tamem ve !olmaz bindlerini belki ctcp içinde kullanmak istersen eğer direk ctcp altından bindlersen 2 kod çakışmaz

 
Alıntı ile Cevapla

Alt 20 Eylül 2014, 19:33   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: eggdrop invite / davet sorgusu




amaç davet edildiği kanalı ::targetchan "global namespace variable" denilen değişken ile ,hafızada tutması sağlanıyor ki ; bu durumda botu restart yada kill edip yeniden başlatılmadığı sürece bu bilgiyi tutması sağlanıyor.

bu sayede onay yada red kararı verecek bot sahibi, davet geldiği anda botun attığı notice uyarısını göremese dahi ,daha sonradan isterse bir gün yada günler sonra görüp onay yada red komutunu uyguyabilme olanağı olabiliyor.

bind'leri proc içinde alıp dediğiniz şekilde prosedür çalıştığında devreye girmelerini sağlamak !trigger/komutla karar verilmesi gereken bunun gibi bir durumda , hiçbirşeyi fark ettirmez. ister dışarıya koyun ister içe yerleştirin ,sonuç yine !komuta bakar.

ancak misal işletilen prosedürün başka bir prosedürü otomatik olarak tetiklenmesi beklenirse o dediğiniz şekilde yapmak ,bindleri oraya yerleştirmeye bir anlam kazandırır.

örneğin who çektirmek için bir prosedür vardır ,o prosedür içine who'dan dönecek cevabı almak için diğer prosedürü işletmeniz gerekecektir bu durumda o cevabı alacak prosedürü tetikleyecek bind'i içeride tutmanız gerekebilir.

böylesi bir durumda o bind'i prosedür içinde tutmanızın bir amacı/işlevi olur.şimdi sizin yukarda önerdiğiniz gibi prosedür içine almakla dışında olması arasında uygulamada bir "fark" yaratacak durum olamayacaktır.

unset ile bind raw ile yakalanacak invite bilgisi işi bitince sıfırlanıp,hafızadan temizlenir. ,::targetchan global değişkeninde saklıyken alttaki !komutla çağırılan prosedürlerde info exists ile kontrol ediliyor ki eğer böyle bir bilgi/veri hafızada var ise ... gereken yapılıyor. zaten yok ise prosedür sonunda return 0 ile o komutlar etkisiz oluyor.

yani davet olmadan,saklanan bir davet edilmiş kanal bilgisi olamayacağından, o komutlardan herhangi birini kullandığınızda hiçbir tepki alamazsınız.var ise istenen görevi yapar.

ha kod her beklentiyi karşılar mı? değil tabi geliştirilmeye üstünde oynanmaya açıktır tabi ki...eggdrop Tcl kodları açık kaynaktır. isteyen,dileyen kendi ihtiyaçları,fikirleri doğrultusunda gördüğü kodu alıp geliştirebilir ekleme çıkarma,düzenleme yapabilir. hiçbir sıkıntı yoktur.
(emeği geçen başka biri varsa kodda ,sıfırdan kendiniz yazmamışsanız emeği geçen/leri onore etmek ,kod içinde onun imzasına/adına yer vermek,bir teşekkür vs adettendir. sadece ..)

mesala ne eklenebilir bana göre owner yoksa,bağlı değilse eggdrop'un notes modülünden faydalanarak bir memo/note eklenebilir. ki böylece bot sahibi sunucuda yoksa geldiğinde not/memo olarak kendisine iletilebilir. yada memoserv'de kullanılabilir bu iş için .. vs vs ..

yapılabilecekler ,kendi ihtiyaçlarınız ve hayal gücünüzle sınırlı.. biri istedi yaptım verdim o hayatından memnun,istediğini,beklediğini aldı... bende başka birileri daha kullanmak isteyebilir diye alıp buraya koydum ,bu noktada benim bununla (en azından şimdilik, ileride olurda canım çeker hadi şuna biraz daha fazla özellik ekleyip geliştireyim diye bir şevk gelmediği sürece..) işim bitmiştir...


Konu saywhat tarafından (20 Eylül 2014 Saat 21:30 ) değiştirilmiştir.
 
Alıntı ile Cevapla

Alt 20 Eylül 2014, 22:35   #4
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: eggdrop invite / davet sorgusu




hadi biraz daha geliştirip o özelliği de ekleyelim... memo/not değilde (ki şart da değil öyle olması)

ortada botun aldığı bir davet (invite) var ise ,davet edilen kanalı ::targetchan ile ve kimden geldiğini ayrı bir değişken ile bot hafızasında saklayıp,ortada bilgilendirecek bir sahip (owner) yoksa, o geldiğinde/kanala (botun olduğu herhangi bir kanala) girişinde sahibine bu aldığı davet bilgisini iletsin....

ki böylelikle bot sahibi "online" değilse dahi ,döndüğünde isteğe kabul yada red cevabını verebilsin....

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind raw - "INVITE" inv_join bind msg n "!tamam" accept_inv bind msg n "!olmaz" reject_inv bind join n "* *" owner_note proc inv_join {from key arg} { set ::targetchan [lindex [split $arg ":"] 1] set ::invited $from putserv "notice $::owner :$from tarafından, $::targetchan kanalına davet edildim." putserv "notice $::owner :daveti kabul etmek için: /msg $::botnick !tamam" putserv "notice $::owner :daveti red etmek için: /msg $::botnick !olmaz" return 0 } proc reject_inv {nick uhost hand text} { if {[info exists ::targetchan] && [info exists ::invited]} { unset ::targetchan unset ::invited putserv "notice $::owner :Red edildi .." return 1 } return 0 } proc accept_inv {nick uhost hand text} { if {[info exists ::targetchan] && [info exists ::invited]} { channel add $::targetchan putserv "notice $::owner :Kanala girildi .." unset ::targetchan unset ::invited return 1 } return 0 } proc owner_note {nick uhost hand chan} { if {[info exists ::targetchan] && [info exists ::invited]} { putserv "notice $::owner :$::invited tarafından, $::targetchan kanalına davet edildim." putserv "notice $::owner :daveti kabul etmek için: /msg $::botnick !tamam" putserv "notice $::owner :daveti red etmek için: /msg $::botnick !olmaz" return 1 } return 0 } putlog "ok..."

ki böylelikle bot sahibinin botun attığı davet bilgisi notice'ini görmemesi/gözden kaçırma olasılığı da bir anlamda ortadan kalkıyor.çünkü buna bir kabul yada red cevabı verinceye dek bu bilgi (bot hafızası temizlenmediği sürece) saklanacak ve sahibi her kanala girdiğinde ona bir karşılama mesajı gibi atacaktır.. sahibi yanıt verdiğinde bu bilgiler temizlenmiş olacak ve artık o kabul/red komutları da işlemeyecek.... hikayenin sonu...


Konu AftieL tarafından (21 Eylül 2014 Saat 02:08 ) değiştirilmiştir. Sebep: Güncelleme
 
Alıntı ile Cevapla

Cevapla

Etiketler
davet, eggdrop, invite, sorgu, sorgusu, tcl


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
invite tsctl IRCd 0 16 Ocak 2012 00:14
!invite Voodo mIRC Scripting Sorunları 7 28 Mart 2011 11:10
invite script ztyle mIRC Scripting Sorunları 13 09 Kasım 2010 22:46
invite raw Flyman mIRC Scripting Sorunları 3 08 Mayıs 2005 16:34