Text to Regex Alias (Kelimeyi Regexe Çevirmek)

Aytac

nicktag
Yönetici
Developer
Katılım
4 Şub 2020
Mesajlar
379
Tepkime puanı
50
Puanları
28
Konum
ircland
Web sitesi
www.ircalem.net
FnX botunun auto spam kodundan bir parçayı sizlerle paylaşma kararı aldım. daha da gelişmiş halini de ilerleyen zamanlarda paylaşmayı düşünüyorum. regexe çevirmek istediğiniz kelimenin boyutu 338 byte/karakterden büyük ise regex çevirme işlemini yapmıyor. bunun sebebi bu kodu kulanmış olduğum sunucuda bu boyutu aşan verilerin (açıklama dahil) spamfilter olarak eklenememesiydi.  kullanımıyla ilgili örnekleri aşağıda vereceğim.

öncelikle kodumuz:
Kod:
;yardımcılar
alias _reg { return $replace($1-,a,[àáâãäåæÆÀÁÂÃÄÅÆaª@4],e,[æèéêëe£â‚¬ÈÉÊ3],i,ı,ı,İ,İ,[ÌÍÎÏìíîïİıi\!1j],b,ß,ß,[bß],k,[kq],o,ö,ö,Ö,Ö,0,0,[òóôõoöÖøÒØÔº0],u,ü,ü,Ü,Ü,[ùúûÙÚÛuÜüÙµ],[:p[ùúûÙÚÛuÜüÙµ]nct:],[:punct:],ğ,Ğ,Ğ,g,g,q,q,[ğĞgq],c,ç,ç,Ç,Ç,[©¢cçÇ],[k[ğĞgq]],([kq]|(\|\{)),[:pun[©¢cçÇ]t:],[:punct:],[:[©¢cçÇ]ntrl:],[:cntrl:],r,[r\®],[:cnt[r\®]l:],[:cntrl:],ş,s,s,Ş,Ş,$,$,[Å¡Å*sŞş§\$5],\[Å¡Å*sŞş§\$5],\s,v,w,w,[wv]) }
alias c {
  if $regex($prop,/^b$/) { return $+($chr(3),$regsubex($1,/(x)/g,$chr(44)),$chr(2),$chr(2),$chr(2),$2-,$chr(3),$chr(2)) } 
  if $regex($prop,/^u$/) { return $+($chr(3),$regsubex($1,/(x)/g,$chr(44)),$chr(31),$chr(2),$chr(2),$2-,$chr(3),$chr(31)) }
  if $regex($prop,/^(bu)|(ub)$/) { return $+($chr(3),$regsubex($1,/(x)/g,$chr(44)),$chr(31),$chr(2),$chr(2),$chr(2),$2-,$chr(3),$chr(31),$chr(2)) }
  else { return $+($chr(3),$regsubex($1,/(x)/g,$chr(44)),$chr(2),$chr(2),$2-,$chr(3))) }
}
;olay
alias çevir3 {
  var %breglen (?i) $+ $regsubex($_reg($regsubex($regsubex($regsubex($strip($1),/(.)/g,\1+([[:punct:][:cntrl:] ]|\d)*),/\Q([[:punct:][:cntrl:] ]|\d)*\E$/g,),/\+$/g,)),/(\[bß\]|n|m|z|h|f|x|d|p|y|t|l|\[wv\]|\Q([kq]|(\|\{))\E|\[wv\]|\[©¢cçÇ\]|\Q[Å¡Å*sŞş§\$5]\E|\[ğĞgq\]|\Q[r\®]\E)\+\Q([[:punct:][:cntrl:] ]|\d)*\E/gi,\1+([[:punct:][:cntrl:] ]|\d|h)*)
  if $len(%breglen) > 338 { 
    echo -a $c(4,<Hata Mesajı>) Çevirdiğiniz regex spamfilter için $c(4,$calc($+($len(%breglen),-,338))) BYTE kadar büyük. Lütfen kelimenizi $c(4,sondan birer harf silerek).b çevirme işlemini yineleyin.
    echo -a -
    return
  }
  echo -a $c(2,Kelime:) $1
  echo -a $c(2,Regex:) %breglen
  echo -a $c(2,Boyut:) $len(%breglen) BYTE
  echo -a - 
}
yaptığımız testler:

uygulama: /çevir3 Xenophanes
cevap:
<Hata Mesajı> Çevirdiğiniz regex spamfilter için 8 BYTE kadar büyük. Lütfen kelimenizi sondan birer harf silerek çevirme işlemini yineleyin.
-
uygulama: /çevir3 Xenop
cevap:
Kelime: Xenop
Regex: (?i)X+([[:punct:][:cntrl:] ]|\d|h)*[æèéêëe£â‚¬ÈÉÊ3]+([[:punct:][:cntrl:] ]|\d)*n+([[:punct:][:cntrl:] ]|\d|h)*[òóôõoöÖøÒØÔº0]+([[:punct:][:cntrl:] ]|\d)*p
Boyut: 152 BYTE
-
uygulama: /çevir3 trsohbet
cevap:
Kelime: trsohbet
Regex: (?i)t+([[:punct:][:cntrl:] ]|\d|h)*[r\®]+([[:punct:][:cntrl:] ]|\d|h)*[Å¡Å*sŞş§\$5]+([[:punct:][:cntrl:] ]|\d|h)*[òóôõoöÖøÒØÔº0]+([[:punct:][:cntrl:] ]|\d)*h+([[:punct:][:cntrl:] ]|\d|h)*[bß]+([[:punct:][:cntrl:] ]|\d|h)*[æèéêëe£â‚¬ÈÉÊ3]+([[:punct:][:cntrl:] ]|\d)*t
Boyut: 262 BYTE
-

bu arada şu c aliası kodlarda renk,bold,altı çizili gibi olayları kodlamalarda kullanabilmek için azıcık ta can sıkıntısından yapmış olduğum bir şey. onun da olayı:
kırmızı font, beyaz yazı ile Xenophanes yazmak için: $c(0x4,Xenophanes)
kırmızı font, beyaz yazı, kalın harfler ile Xenophanes yazmak için: $c(0x4,Xenophanes).b
kırmızı font, beyaz yazı, altı çizili harfler ile Xenophanes yazmak için: $c(0x4,Xenophanes).u
kırmızı font, beyaz yazı, altı çizili, kalın harfler ile Xenophanes yazmak için: $c(0x4,Xenophanes).ub veya $c(0x4,Xenophanes).bu
kırmızı yazı ile Xenophanes yazmak için: $c(4,Xenophanes)
-
 

Benzer konular

Üst