Tekil Mesaj gösterimi
Alt 19 Ağustos 2026, 23:13   #1
KivanC Editör
✓
W r i t e r
KivanC - ait Kullanıcı Resmi (Avatar)

Standart Nomercy botunuzun özeline not bırakın.

┌──────────────────────────────────────────── ─┐
│ NoMercy Bot - Şifreli Kişisel Not/Günlük │
│ Sistemi [mIRC Script] │
└──────────────────────────────────────────── ─┘

Selamlar,

NoMercy tabanlı botlarınız için geliştirdiğim, kullanıcıların
kendilerine özel, şifreli not/günlük bırakabildiği ve sunucuya
her girişlerinde bundan haberdar edildiği bir sistemi paylaşıyorum.

▌ ÖZELLİKLER

✔ Notlar $encrypt() ile şifrelenip .ini dosyasında saklanır
✔ İçerik ASLA listede gösterilmez — sadece ID, tarih ve
kelime sayısı görünür, gizlilik tam korunur
✔ Kalıcı ID sistemi — silme/düzenleme sırasında numaralar
kaymaz
✔ Günlük not limiti + bekleyen not limiti (spam/şişme önler)
✔ Komut flood/tekrar koruması (art arda yazamama)
✔ 30 günden eski notlar otomatik temizlenir (ayarlanabilir)
✔ @onemli etiketiyle öncelikli not işaretleme
✔ Not düzenleme (!notduzenle)
✔ Toplu okuma/silme (hepsi)
✔ İçerik içi kelime arama (!notara)
✔ Sunucuya girince NOTICE ile bildirim — aynı kişiye spam
bildirim gitmesin diye bekleme süresi var
✔ Kişi SADECE kendine not bırakabilir, başkasına yazamaz

▌ KOMUTLAR

!not [@onemli] <mesaj> → not ekler
!notlarim → ID'li liste (içerik gizli)
!notoku <id|hepsi> → notu okur (özelden)
!notsil <id|hepsi> → notu siler
!notduzenle <id> <mesaj> → notu günceller
!notara <kelime> → notlarında arama yapar

▌ KURULUM

1) Kodu yeni bir .mrc dosyasına kaydedin
2) Alt+R (Script Editor) > File > Load ile yükleyin
3) notanahtar alias'ındaki şifreyi MUTLAKA değiştirin
4) İsterseniz limitleri (günlük not, karakter, süre) en
üstteki alias'lardan ayarlayın

▌ NOT

Tüm işlemler özelden (query) ve NOTICE ile yürür, kanala
hiçbir içerik sızmaz. Kod tamamen açık kaynak, dilediğiniz
gibi düzenleyebilirsiniz.

Kodu aşağıya bırakıyorum, iyi forumlar!


;

HTML-Kodu

================================================
;  NoMercy Bot - Kisisel Sifreli Not/Gunluk Sistemi (Tam Surum)
;  !not [@onemli] <mesaj>       -> not ekler (etiket opsiyonel)
;  !notlarim                    -> ID'li liste (icerik gizli)
;  !notoku <id|hepsi>           -> notu/notlari ozelden gosterir
;  !notsil <id|hepsi>           -> notu/notlari siler
;  !notduzenle <id> <mesaj>     -> var olan notu gunceller
;  !notara <kelime>             -> notlar icinde arama yapar
; ================================================

alias notdosya        { return $+($scriptdir,notlar.ini) }
alias notanahtar      { return DEGISTIR_BU_GIZLI_ANAHTARI_2026 }
alias notbekleme      { return 10 }    ; komut spam korumasi (saniye)
alias notgunluklimit  { return 15 }    ; gunluk max not sayisi
alias nottoplamlimit  { return 100 }   ; bekleyen max not sayisi
alias notmaxkarakter  { return 500 }   ; tek not icin max karakter
alias notsuresi       { return 30 }    ; gun - bu sureden eski notlar otomatik silinir
alias notbildirimbekleme { return 3600 } ; ayni kisiye tekrar NOTIFY bildirimi icin bekleme (saniye)

; --- ID uretici: kullanicinin bir sonraki notu icin kalici artan numara ---
alias notyeniid {
  var %kullanici = $1
  var %mevcut = $readini($notdosya,n,IDSAYAC,%kullanici)
  if (%mevcut == $null) { var %mevcut = 0 }
  var %yeni = $calc(%mevcut + 1)
  writeini $notdosya IDSAYAC %kullanici %yeni
  return %yeni
}

on *:START: {
  if ($hget(notflood))    { hfree notflood }
  if ($hget(notsayac))    { hfree notsayac }
  if ($hget(notbildirim)) { hfree notbildirim }
  hmake notflood 100
  hmake notsayac 100
  hmake notbildirim 100

  ; notify listesine bekleyen notu olanlari ekle (IDSAYAC bolumunu atla)
  var %i = 1
  while ($ini($notdosya,%i)) {
    var %hedef = $ini($notdosya,%i)
    if (%hedef != IDSAYAC) {
      if ($notify(%hedef) == 0) { notify +%hedef }
    }
    inc %i
  }

  ; eski notlari periyodik temizleyen zamanlayici (her 6 saatte bir)
  if ($timer(nottemizle)) { .timernottemizle off }
  .timernottemizle 0 21600 nottemizlik
}

; --- Eski notlari otomatik temizleme ---
alias nottemizlik {
  var %i = 1
  while ($ini($notdosya,%i)) {
    var %kullanici = $ini($notdosya,%i)
    if (%kullanici != IDSAYAC) {
      var %j = 1, %adet = $ini($notdosya,%kullanici,0)
      while (%j <= %adet) {
        var %anahtar = $ini($notdosya,%kullanici,%j)
        var %veri    = $readini($notdosya,n,%kullanici,%anahtar)
        var %zaman   = $gettok(%veri,1,1)
        if ($calc($ctime - %zaman) > $calc($notsuresi * 86400)) {
          remini $notdosya %kullanici %anahtar
        }
        else { inc %j }
      }
      if (!$ini($notdosya,%kullanici)) { notify -%kullanici }
    }
    inc %i
  }
}

; --- !not [@onemli] <mesaj> ---
on *:TEXT:/^!not\s+(.+)$/i:?:{
  var %kullanici = $lower($nick)
  var %mesaj     = $regml(1)
  var %oncelik   = 0

  if ($regex(%mesaj,/^@onemli\s+(.+)$/i)) {
    var %mesaj  = $regml(1)
    var %oncelik = 1
  }

  if ($len(%mesaj) > $notmaxkarakter) {
    notice $nick Not cok uzun! Maksimum $notmaxkarakter karakter girebilirsiniz. ( $+ $len(%mesaj) $+ girdiniz )
    halt
  }

  if ($hget(notflood,%kullanici)) {
    var %kalan = $calc($hget(notflood,%kullanici) - $ctime)
    if (%kalan > 0) {
      notice $nick Lutfen bekleyin, tekrar not eklemek icin %kalan saniye sonra deneyin.
      halt
    }
  }

  var %veri       = $hget(notsayac,%kullanici)
  var %sayac      = $iif(%veri,$gettok(%veri,1,32),0)
  var %sifirlanma = $iif(%veri,$gettok(%veri,2,32),0)
  if ($ctime > %sifirlanma) {
    var %sayac = 0
    var %sifirlanma = $calc($ctime + 86400)
  }
  if (%sayac >= $notgunluklimit) {
    notice $nick Gunluk not limitine ulastiniz ( $notgunluklimit $+ /gun ). Sifirlanmasina kalan sure: $duration($calc(%sifirlanma - $ctime))
    halt
  }

  var %bekleyen = $iif($ini($notdosya,%kullanici),$ini($notdosya,%kullanici,0),0)
  if (%bekleyen >= $nottoplamlimit) {
    notice $nick Bekleyen notlariniz doldu ( $nottoplamlimit $+ adet ). Once eskilerini !notsil ile silin.
    halt
  }

  hadd notflood %kullanici $calc($ctime + $notbekleme)
  hadd notsayac %kullanici $+($calc(%sayac + 1),$chr(32),%sifirlanma)

  var %id        = $notyeniid(%kullanici)
  var %ayrac     = $chr(1)
  var %sifreli   = $encrypt(%mesaj,1,$notanahtar)
  var %hash      = $md5(%mesaj)
  var %kelime    = $numtok(%mesaj,32)

  writeini $notdosya %kullanici $+(id,%id) $+($ctime,%ayrac,%sifreli,%ayrac,%hash,%ayrac,%kelime,%ayrac,%oncelik,%ayrac,0)

  if ($notify(%kullanici) == 0) { notify +%kullanici }

  notice $nick Not #%id kaydedildi ve sifrelendi. $iif(%oncelik,[ONEMLI] ,) $+ ( $calc(%sayac + 1) $+ / $+ $notgunluklimit $+ bugun )
  halt
}

; --- !notlarim : ID'li liste, icerik gizli ---
on *:TEXT:!notlarim:?:{
  var %kullanici = $lower($nick)
  if (!$ini($notdosya,%kullanici)) {
    notice $nick Kayitli bir notunuz bulunmuyor.
    halt
  }
  var %ayrac = $chr(1)
  var %i = 1, %adet = $ini($notdosya,%kullanici,0)
  notice $nick --- Notlariniz ( %adet $+ adet ) ---
  while (%i <= %adet) {
    var %anahtar = $ini($notdosya,%kullanici,%i)
    var %veri    = $readini($notdosya,n,%kullanici,%anahtar)
    var %zaman   = $gettok(%veri,1,%ayrac)
    var %kelime  = $gettok(%veri,4,%ayrac)
    var %oncelik = $gettok(%veri,5,%ayrac)
    var %duzenlendi = $gettok(%veri,6,%ayrac)
    var %numara  = $remove(%anahtar,id)
    notice $nick $+(#,%numara) $+ $chr(32) $+ $asctime(%zaman,dd.mm.yyyy HH:nn) $+ $chr(32) $+ ( %kelime $+ kelime ) $+ $iif(%oncelik,$chr(32) $+ [ONEMLI],) $+ $iif(%duzenlendi != 0,$chr(32) $+ [duzenlendi],)
    inc %i
  }
  notice $nick Oku: !notoku <id|hepsi>  Sil: !notsil <id|hepsi>  Duzenle: !notduzenle <id> <mesaj>
  halt
}

; --- !notoku <id|hepsi> ---
on *:TEXT:/^!notoku\s+(id)?(\d+|hepsi)$/i:?:{
  var %kullanici = $lower($nick)
  var %hedef     = $regml(2)
  var %ayrac     = $chr(1)

  if (!$ini($notdosya,%kullanici)) {
    notice $nick Kayitli bir notunuz bulunmuyor.
    halt
  }

  if ($lower(%hedef) == hepsi) {
    var %i = 1, %adet = $ini($notdosya,%kullanici,0)
    while (%i <= %adet) {
      var %anahtar = $ini($notdosya,%kullanici,%i)
      var %veri    = $readini($notdosya,n,%kullanici,%anahtar)
      var %zaman   = $gettok(%veri,1,%ayrac)
      var %mesaj   = $decrypt($gettok(%veri,2,%ayrac),1,$notanahtar)
      var %numara  = $remove(%anahtar,id)
      notice $nick $+(#,%numara) $+ $chr(32) $+ $asctime(%zaman,dd.mm.yyyy HH:nn) $+ : %mesaj
      inc %i
    }
    halt
  }

  var %anahtar = $+(id,%hedef)
  var %veri    = $readini($notdosya,n,%kullanici,%anahtar)
  if (%veri == $null) {
    notice $nick %hedef numarali not bulunamadi.
    halt
  }
  var %zaman = $gettok(%veri,1,%ayrac)
  var %mesaj = $decrypt($gettok(%veri,2,%ayrac),1,$notanahtar)
  notice $nick $+(#,%hedef) $+ $chr(32) $+ $asctime(%zaman,dd.mm.yyyy HH:nn) $+ : %mesaj
  halt
}

; --- !notsil <id|hepsi> ---
on *:TEXT:/^!notsil\s+(id)?(\d+|hepsi)$/i:?:{
  var %kullanici = $lower($nick)
  var %hedef     = $regml(2)

  if (!$ini($notdosya,%kullanici)) {
    notice $nick Kayitli bir notunuz bulunmuyor.
    halt
  }

  if ($lower(%hedef) == hepsi) {
    var %adet = $ini($notdosya,%kullanici,0)
    remini $notdosya %kullanici
    notice $nick Tum notlariniz silindi. ( %adet $+ adet )
    notify -%kullanici
    halt
  }

  var %anahtar = $+(id,%hedef)
  if ($readini($notdosya,n,%kullanici,%anahtar) == $null) {
    notice $nick %hedef numarali not bulunamadi.
    halt
  }
  remini $notdosya %kullanici %anahtar
  notice $nick $+(#,%hedef) numarali not silindi.
  if (!$ini($notdosya,%kullanici)) { notify -%kullanici }
  halt
}

; --- !notduzenle <id> <yeni mesaj> ---
on *:TEXT:/^!notduzenle\s+(id)?(\d+)\s+(.+)$/i:?:{
  var %kullanici = $lower($nick)
  var %hedef     = $regml(2)
  var %yenimesaj = $regml(3)
  var %ayrac     = $chr(1)

  if ($len(%yenimesaj) > $notmaxkarakter) {
    notice $nick Not cok uzun! Maksimum $notmaxkarakter karakter girebilirsiniz.
    halt
  }

  var %anahtar = $+(id,%hedef)
  var %veri    = $readini($notdosya,n,%kullanici,%anahtar)
  if (%veri == $null) {
    notice $nick %hedef numarali not bulunamadi.
    halt
  }

  var %zaman   = $gettok(%veri,1,%ayrac)
  var %oncelik = $gettok(%veri,5,%ayrac)
  var %sifreli = $encrypt(%yenimesaj,1,$notanahtar)
  var %hash    = $md5(%yenimesaj)
  var %kelime  = $numtok(%yenimesaj,32)

  writeini $notdosya %kullanici %anahtar $+(%zaman,%ayrac,%sifreli,%ayrac,%hash,%ayrac,%kelime,%ayrac,%oncelik,%ayrac,$ctime)
  notice $nick $+(#,%hedef) numarali not guncellendi.
  halt
}

; --- !notara <kelime> ---
on *:TEXT:/^!notara\s+(.+)$/i:?:{
  var %kullanici = $lower($nick)
  var %aranan    = $regml(1)
  var %ayrac     = $chr(1)

  if (!$ini($notdosya,%kullanici)) {
    notice $nick Kayitli bir notunuz bulunmuyor.
    halt
  }

  var %i = 1, %adet = $ini($notdosya,%kullanici,0), %bulunan = 0
  while (%i <= %adet) {
    var %anahtar = $ini($notdosya,%kullanici,%i)
    var %veri    = $readini($notdosya,n,%kullanici,%anahtar)
    var %mesaj   = $decrypt($gettok(%veri,2,%ayrac),1,$notanahtar)
    if ($instok(%mesaj,%aranan,0,32) || $pos(%mesaj,%aranan,1)) {
      var %numara = $remove(%anahtar,id)
      var %zaman  = $gettok(%veri,1,%ayrac)
      notice $nick $+(#,%numara) $+ $chr(32) $+ $asctime(%zaman,dd.mm.yyyy HH:nn) $+ : %mesaj
      inc %bulunan
    }
    inc %i
  }
  if (%bulunan == 0) { notice $nick "%aranan" icin sonuc bulunamadi. }
  else { notice $nick %bulunan sonuc bulundu. }
  halt
}

; --- Sunucuya girince bildirim (spam korumali) ---
on *:NOTIFY: {
  var %kullanici = $lower($nick)
  if ($ini($notdosya,%kullanici)) {
    if ($hget(notbildirim,%kullanici)) {
      if ($ctime < $hget(notbildirim,%kullanici)) { halt }
    }
    hadd notbildirim %kullanici $calc($ctime + $notbildirimbekleme)
    var %adet = $ini($notdosya,%kullanici,0)
    notice $nick Notunuz var! ( %adet adet ) Gormek icin: !notlarim yaz.
  }
}
________________

"Sevilmenin kıymeti bilinmiyorsa, Uzaklaşmak En güzeli ki üzülen sen olmayasın"