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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   TCL Scriptler (https://www.ircforumlari.net/tcl-scriptler/)
-   -   kanala mesaj kodunda hata (https://www.ircforumlari.net/tcl-scriptler/509573-kanala-mesaj-kodunda-hata.html)

Spectral 31 Ekim 2012 01:01

kanala mesaj kodunda hata
 
Komut: !mesaj #aaa [ deneme] deneme bir iki
Sonuç: <bot> {[} deneme \]

Kod:

    set optiones $args
    set args [lindex $args 0]
            #set args [split $args]
            set chan [lindex $args 0]
            set msgtosend [lrange $args 1 end]

Sonuç: <bot> [ deneme] deneme bir iki
Şeklinde olmalıydı, hatayı nasıl düzeltebiliriz ?

saywhat 31 Ekim 2012 06:28

Cevap: kanala mesaj kodunda hata
 
kodun tamamını göstermediğiniz için bişey demek zor ..sadece şunu söyleyebilirim :

\[ deneme\] kod içinde kanala aktarılmak istenen [ ] karakterlerini baştaki şekilde kod içinde karakterin sol başına " \ " gelecek şekilde belirtirseniz kanala postalandığında [ deneme] şeklinde çıkacaktır .özetle korunmak istenen aynen çıkması istenen [ ] karakteri sol başına \ koyarak \[ deneme\] korumak mümkün olabilir.bu durum tcl script yazımında kullanılan özel karakterler içindir ki burda deneme kelimesini içine alan [ ]
karakterleri bunlardandır.bu nedenlede kanala postalandığında aynen çıkması mümkün olamıyor.yukardaki belirttiğim şekilde kod içinde bunu düzenlerseniz bu bozulma olmayacak o karakterler sakınılarak postalanacaktır.

Spectral 31 Ekim 2012 19:16

Cevap: kanala mesaj kodunda hata
 
Kodun tamamını gerektiren bir sorum yok diye düşünüyorum

putquick "PRIVMSG $chan :$msgtosend"
ile set $msgtosend de tutulan mesajı kanala gönderiyorum.
Tek sorun "set $msgtosend" de [ ] için bir kodlama düzenlemesi gerekiyor sanırım.

Teşekkürler

saywhat 31 Ekim 2012 20:11

Cevap: kanala mesaj kodunda hata
 
regsub komutu kullanarak kendiniz denemelisiniz bu durumda bu özel karakterleri [ ] { } " \ gibi karakterleri bozulmadan kaçırabilir-sakınabilirisiniz. örnek olarak
Kod:

    regsub -all -- \\\ $msgtosend \\\\\\\\ msgtosend
    regsub -all -- \\[ $msgtosend \\\\\[ msgtosend
    regsub -all -- \\] $msgtosend \\\\\] msgtosend
    regsub -all -- \\} $msgtosend \\\\\} msgtosend
    regsub -all -- \\{ $msgtosend \\\\\{ msgtosend
    regsub -all -- \\" $msgtosend \\\\\" msgtosend
    regsub -all -- [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $msgtosend \\\\\' msgtosend
    return $msgtosend

gibi ...

Spectral 31 Ekim 2012 20:52

Cevap: kanala mesaj kodunda hata
 
İstediğim bu karakterleri engellemek değil, !mesaj #aaa [ deneme] deneme bir iki < komutunu kullandığımız zaman ilk mesajımda ki kodda bulunan msgtosend ile "[ deneme] deneme bir iki" mesajını kanala göndermeye çalışıyorum.

saywhat 31 Ekim 2012 22:32

Cevap: kanala mesaj kodunda hata
 
ups code tagları içine koyduğumda yutuyor :
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] <-- buraya pasteledim.
koymasamda filtreliyor forum hmmz.

saywhat 01 Kasım 2012 15:47

Cevap: kanala mesaj kodunda hata
 
kullanabileceğiniz deneme -yanılmayla bu iş için kullanılabilecek komut uygulamaları arasında şunlarda olabilir. bugün tcl.sh üstünde bikaç deneme yaptım sanırım bunlarlada bu istediğiniz iş yapılabilir.
kendinizde bilgisayarınıza [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] active tcl kurup tcl.sh aracı üstünde denemeler yapabilirsiniz.

yada eggdrop partyline bağlantısı üstünde .tcl .set komutları yardımıyla denemeler yapabilirsiniz. bu komutları kullanabilmek için :
eggdrop.conf dosyanız içinde
Kod:

bind dcc n tcl *dcc:tcl
bind dcc n set *dcc:set

satırlarını ekleyip restart etmelisiniz büyük ihtimalle bu iki satır bind olarak değil unbind olarak vardır.onları bind olarak değişmeniz bu komutları aktif etmeniz için kafi.ancak rehash yeterli olmaz .restart etmelisiniz.sonra bota bağlanıp denemelerinizi yapabilirsiniz.

bugün benim bu iş için denediğim komutlar bu örneklerden yola çıkarak deneyerek istediğiniz değişikliği kullandığınız kod üzerinde yapabilirsiniz.
ilk olarak string map bu iş için kullanılabilir:
Kod:

set ornek {abcdefg[hij]klmnop}
-> abcdefg[hij]klmnop
string map {[ {} ] {}} $ornek
-> abcdefghijklmnop

hatta string match ilede halledilebilir. regsub biraz kafa karıştırıcı gelebilir.bu tür komutları tcl.sh üstünde deneyerek doğru uygulamayı kendiniz bulabilirsiniz.
Kod:

if {[string match {*\[*} $ornek]} {
    puts bla bla bla
  }

vs vs..


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 16:41.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk