Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


bannir une annonce a repetiton
#1
Bonjour me revoila!!!

Je recherche une tcl qui bannirait tout user faisant la même annonce en moins de Xtemps.
Par exemple Monsieur X radotte et sors la même annonce plus de 3 fois en moins de 10 minutes, il se prends un ban
Quelqu'un aurait-il cela dans les parages svp ?

Bon week-end a vous tous

Merci
Gilles
#2
bonjour,

En faisant une petite recherche avec Google j'ai trouvé ceci peut être que sa peut te servir ! (à essayé )


tcl
# repeat.tcl v1.1 (9 April 1999) by slennox <slenny@ozemail.com.au>
# Latest versions can be found at www.ozemail.com.au/~slenny/eggdrop/
#
# This script detects people who repeat the same line of text on a channel
# multiple times, and kicks and/or bans them. It is a complete rewrite of
# the original repeat.tcl script by Tris.
#
# There are three repeat detectors in this script - one for small repeat
# floods, one for large repeat floods, and one for 'spam' type repeats
# (e.g. people who ask the same question multiple times in a channel). An
# additional mechanism detects whether multiple repeat floods are coming 
# from a particular host.
#
# Note that the script isn't perfect since it uses only three single,
# cycling utimers to prevent the bot becoming bogged down with separate
# utimers for each message sent to a channel. This means it won't always
# detect a repeat flood, but it will work most of the time (and aggressive
# repeat floods should always be detected).
#
# v1.0 - Initial release
# v1.1 - Reorganised main proc and fixed problem with multiple repeat flood
# ban triggering when it shouldn't, added detection of repeated notices,
# changed some other things
 
# Small repeat flood, kick on repeats:seconds
set rp_kflood 3:60
# Small repeat flood kick reason
set rp_kreason "stop repeating"
 
# Large repeat flood, kick-ban on repeats:seconds
set rp_bflood 5:60
# Large repeat flood kick-ban reason
set rp_breason "repeat flood"
 
# Spam repeat flood, kick on repeats:seconds
set rp_sflood 3:240
# Spam repeat flood kick reason
set rp_sreason "stop repeating"
# Set the string length for spam-type text (lines of text shorter than this
# will not be counted by the 'spam' type repeat detector)
set rp_slength 40
 
# Repeat offences, ban on two repeat floods from a particular host within
# how many seconds
set rp_mtime 240
# Repeat offences ban reason
set rp_mreason "multiple repeat floods"
 
# Length of time in minutes to ban large repeat flooders and repeat
# offenders
set rp_btime 60
 
 
# Don't edit anything below unless you know what you're doing
 
proc rp_pubmsg {nick uhost hand chan text} {
  global botnick rp_bcount rp_bflood rp_breason rp_btime rp_kcount rp_kflood rp_kreason rp_scount rp_sflood rp_slength rp_sreason
  set uhost [string tolower $uhost]
  set chan [string tolower $chan]
  set text [string tolower $text]
  if {$nick == $botnick} {return 0}
  if {[matchattr $hand f|f $chan]} {return 0}
  if {![info exists rp_bcount($uhost:$chan:$text)]} {
    set rp_bcount($uhost:$chan:$text) 0
  }
  incr rp_bcount($uhost:$chan:$text)
  if {![info exists rp_kcount($uhost:$chan:$text)]} {
    set rp_kcount($uhost:$chan:$text) 0
  }
  incr rp_kcount($uhost:$chan:$text)
  if {[string length $text] > $rp_slength} {
    if {![info exists rp_scount($uhost:$chan:$text)]} {
      set rp_scount($uhost:$chan:$text) 0
    }
    incr rp_scount($uhost:$chan:$text)
  }
  if {$rp_bcount($uhost:$chan:$text) == [lindex $rp_bflood 0]} {
    if {[botisop $chan] && [onchan $nick $chan]} {
      putserv "KICK $chan $nick :$rp_breason"
    }
    set bmask *!*[string tolower [string range $uhost [string first "@" $uhost] end]]
    newchanban $chan $bmask repeat $rp_breason $rp_btime
    return 0
  }
  if {$rp_kcount($uhost:$chan:$text) == [lindex $rp_kflood 0]} {
    rp_mhost $nick $uhost $chan
    if {[botisop $chan] && [onchan $nick $chan]} {
      putserv "KICK $chan $nick :$rp_kreason"
    }
    return 0
  }
  if {[info exists rp_scount($uhost:$chan:$text)]} {
    if {$rp_scount($uhost:$chan:$text) == [lindex $rp_sflood 0]} {
      rp_mhost $nick $uhost $chan
      if {[botisop $chan] && [onchan $nick $chan]} {
        putserv "KICK $chan $nick :$rp_sreason"
      }
      return 0
    }
  }
}
 
proc rp_pubact {nick uhost hand dest key arg} {
  rp_pubmsg $nick $uhost $hand $dest $arg
}
 
proc rp_pubnotc {from keyword arg} {
  set nick [lindex [split $from !] 0]
  set chan [string tolower [lindex [split $arg] 0]]
  if {![validchan $chan] || ![onchan $nick $chan]} {return 0}
  set uhost [getchanhost $nick $chan]
  set hand [nick2hand $nick $chan]
  set text [join [lrange [split $arg] 1 end]]
  rp_pubmsg $nick $uhost $hand $chan $text
}
 
proc rp_mhost {nick uhost chan} {
  global rp_btime rp_mhosts rp_mreason rp_mtime
  set mhost [lindex [split $uhost "@"] 1]
  if {![info exists rp_mhosts($chan)]} {
    set rp_mhosts($chan) ""
  }
  set mlist $rp_mhosts($chan)
  if {[lsearch -exact $mlist $mhost] != -1} {
    set bmask *!*[string tolower [string range $uhost [string first "@" $uhost] end]]
    newchanban $chan $bmask repeat $rp_mreason $rp_btime
  } else {
    lappend rp_mhosts($chan) $mhost
    utimer $rp_mtime "rp_mhostreset $chan"
  }
}
 
proc rp_mhostreset {chan} {
  global rp_mhosts
  set rp_mhosts($chan) [lrange rp_mhosts($chan) 1 end]
}
 
proc rp_kreset {} {
  global rp_kcount rp_kflood
  if {[info exists rp_kcount]} {
    unset rp_kcount
  }
  utimer [lindex $rp_kflood 1] rp_kreset
}
 
proc rp_breset {} {
  global rp_bcount rp_bflood
  if {[info exists rp_bcount]} {
    unset rp_bcount
  }
  utimer [lindex $rp_bflood 1] rp_breset
}
 
proc rp_sreset {} {
  global rp_scount rp_sflood
  if {[info exists rp_scount]} {
    unset rp_scount
  }
  utimer [lindex $rp_sflood 1] rp_sreset
}
 
if {![string match *rp_kreset* [utimers]]} {
  global rp_kflood
  utimer [lindex $rp_kflood 1] rp_kreset
}
 
if {![string match *rp_breset* [utimers]]} {
  global rp_bflood
  utimer [lindex $rp_bflood 1] rp_breset
}
 
if {![string match *rp_sreset* [utimers]]} {
  global rp_sflood
  utimer [lindex $rp_sflood 1] rp_sreset
}
 
set rp_kflood [split $rp_kflood :]
set rp_bflood [split $rp_bflood :]
set rp_sflood [split $rp_sflood :]
 
bind pubm - * rp_pubmsg
bind ctcp - ACTION rp_pubact
bind raw - NOTICE rp_pubnotc
 
putlog "Loaded repeat.tcl v1.1 by slennox"


cordialement
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
#3

Voici un script de protection très complet :all protection

Les protections qu'il offre sont :
  • text floods (action or msg)
  • repeat floods
  • notice floods
  • codes floods
  • adv, bad words, and private spam
  • bad nicks/idents (on join and change)
  • join floods
  • revolving door
  • nick floods
  • random nicks ban (drones)
  • takeovers (mass deop/ban/kick)
  • channel limit
  • ctcp/ctcr floods
  • part msg floods
  • clones
  • bad channels
  • excess channels
  • bad CTCP-replies
  • Anti-spam bot (cycler)
  • Botnet flood protections:
  • mass text floods.
  • mass notice floods.
  • mass ctcp/ctcr floods.
  • mass join floods.
  • mass revolving door floods.
  • mass part msg floods.
  • mass nick floods.
  • Private flood protections
  • Private text floods.
  • Private notice floods.
  • Private ctcp/ctcr floods.
(là où il est question de "private qqchose", cela concerne la protection personnelle de l'eggdrop : il se protège aussi lui-même)
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#4
merci pour ces réponses si rapides :)
je vais regarder tout cela
merci a vous
Gilles
#5
bonjour
j'ai tester le tcl de fedora qui marche très bien

je voulais savoir si s'était possible d'y inclure des mots/expression a ignorer ?
du genre les : lol , mdr, bonjour etc etc
car cela prends aussi en compte cela :/
Peux ton y inclure une protection pour les flag +f, +o.
Par contre le ban ne peut etre enlever qu'en pl par un op car s'il l'enleve et que l'user revient le ban est remis par le bot
Possibilité que les op puissent l'enlever sans passer par la pl ?

merci et bon week-end a vous
Gilles
#6
Bonjour

Désolé de revenir sur le sujet mais quelqu'un aurait il une idée svp sur mon dernier poste ?
Merci
Gilles


Possibly Related Threads…
Thread Author Replies Views Last Post
Question TCL annonce KeeViiNou 8 2,008 31/03/2022, 06:00
Last Post: ZarTek
  Crontab d'annonce samdine62 3 1,790 17/03/2020, 10:59
Last Post: CrazyCat
  Annonce X minutes lesny 14 7,940 25/11/2011, 18:03
Last Post: CrazyCat
  Petit soucis avec un script d'annonce de la saint du jour, etc... loulou7593 3 5,955 19/11/2011, 14:53
Last Post: CrazyCat
  Annonce lancement de jeux Darfus 5 5,557 01/07/2011, 20:00
Last Post: aliasangelius
  Bannir un user sur differentes détections cac.team 13 6,921 30/04/2010, 17:15
Last Post: DodY
  bannir des phrases bewess 6 5,275 30/11/2009, 22:53
Last Post: cestlemien
  Bannir un user sur son extension [résolu] loulou7593 7 5,133 23/05/2009, 14:25
Last Post: loulou7593
  Kickban Annonce a repetition bewess 0 3,920 12/05/2008, 09:02
Last Post: bewess
Sad Bannir un host en TCL Babytigrou16 31 20,455 22/11/2007, 21:03
Last Post: Babytigrou16

Forum Jump:


Users browsing this thread: 1 Guest(s)