Script TCL + SQL
#16
Je l'ai mis sur mon premier post Crazy, non ?

Code PHP :
##############
# CONFIGURATION #
##############
 
# -> Login 
set sql(login""
# -> Mot de passe 
set sql(pass"" 
# -> Nom de la base de donnée
set sql(db""
# -> L'host a l'aquelle ce connecté
set sql(host"localhost"
# -> Localisation de fichier mysql.sock
set sql(sock"/path/to/mysqld.sock"

# Anti flood sur les commandes du Bot x:y (x=nombre de fois, y=secondes) :
set wdntw(flood3:5

# Ignorer l'utilisateur après son flood (0=non, 1=oui) :
set wdntw(ignore1

# Si oui, combien de temps (en minutes) :
set wdntw(ignoretime1

# Laisser faire les utilisateurs ayant certains flags :
set wdntw(ignflags"h|h"
 
###########
# PAQUETAGE #
###########
 
catch {package require mysqltcl}
 
#######
# CODE  #
#######
 
#########
# CONNECT #
#########
proc service:connect {} {
    
set ::mysqlink [::mysql::connect -host $::sql(host) -user $::sql(login) -password $::sql(pass) -sock $::sql(sock)]
    ::
mysql::use $::mysqlink $::sql(db)
}
 
###########
# DECONNECT #
###########
 
proc service:deconnect {} {
    ::
mysql::close $::mysqlink; unset -nocomplain ::mysqlink    
}

########
# INFOS #
########
 
proc infos {donnees} {
   
service:connect
   set query 
"SELECT v_artistes, v_titres, m_nom, m_link FROM v5_videos, v5_menus WHERE CONCAT(v_artistes, '%', v_titres) LIKE '%$donnees%' AND menus_id = idmenus"
   
set res [::mysql::sel $::mysqlink $query -flatlist]
   
service:deconnect
   
return $res
}

bind pub $wdntw(ignflags) !sound pub:wdntwcmd

proc pub
:wdntwcmd {nick host hand chan arg} {
        global 
wdntw botnick
    set donnees 
[string_filter [string map {" " %} [join $arg]]]
    
# on transforme les espaces en %
    
if { [llength [split $arg]] == } { 
      
putserv "NOTICE $nick : Merci de préciser ta recherche. Exemple : !sound *artistes ou titres*" 
      
return 
    
}

    if ![
matchattr $nick $wdntw(ignflags$chan] {
       if {[
wdntw:flood $nick $host]} {
          return 
0
       
}
    }
    
    
set res [infos $donnees]
    
    
set artistes [lindex $res 0]
    
set titres [lindex $res 1]
    
set urlmenu [lindex $res 3]
    
set minartistes [string_filter [lindex $res 0]]
    
set mintitres [string_filter [lindex $res 1]]
    
    foreach {
artistes titres urlmenu minartistes mintitres$res {
    if { [
llength $res] > } {
        
#putlog "Résultat : [join $res]";
        
putlog "$artistes - $titres : http://www.wdntw.com/$urlmenu/$minartistes/$mintitres";
        
#putserv "PRIVMSG $chan : $artistes - $titres : http://www.wdntw.com/$urlmenu/$minartistes/$mintitres";
    
} else {
        
putserv "NOTICE $nick : Désolé mais ce son n'existe pas dans ma base de données.";
    }
    }
}

proc string_filter {str} {
    
set str [string map -nocase {
        
" "        "-"        "_"        "-"        "&"        "-"        "/"        "-"
        "."        "-"        "("        "-"        ")"        "-"        "'"        ""
        ","        ""        "è"        "e"        "é"        "e"
    
$str]

    
regsub -all {<br />} $str " " str
    regsub 
-all {<[^>]+>} $str "" str
    regsub 
-all {\n$str " " str

    set str 
[encoding convertfrom utf-8 $str]
    
set str [string tolower $str]
    return 
$str
}

proc wdntw:flood:init {} {
    global 
wdntw wdntwflood
    set wdntw
(floodnum) [lindex [split $wdntw(flood) :] 0]
    
set wdntw(floodtime) [lindex [split $wdntw(flood) :] 1]
    
set i [expr $wdntw(floodnum) - 1]
    while {
$i >= 0} {
       
set wdntwflood($i0
       incr i 
-1
    
}
}
wdntw:flood:init

proc wdntw
:flood {nick host} {
    global 
wdntw wdntwflood botnick
    
if {$wdntw(floodnum) == 0} {
       return 
0
    
}
    
set i [expr $wdntw(floodnum) - 1]
    while {
$i >= 1} {
       
set wdntwflood($i$wdntwflood([expr $i 1])
       
incr i -1
    
}
    
set wdntwflood(0) [unixtime]
    if {[
expr [unixtime] - $wdntwflood([expr $wdntw(floodnum) - 1])] <= $wdntw(floodtime)} {
    if {
$wdntw(ignore)} {
      
newignore [join [maskhost *!*[string trimleft $host ~]]] $botnick "Flood" $wdntw(ignoretime)
    }
    return 
1
    
} {
    return 
0
    
}
}

putlog "Script WDNTW SQL by KiBa loaded!" 

Voilà la dernière version !
Répondre Avertir


Messages dans ce sujet
Script TCL + SQL - par KiBa - 06/12/2013, 15:02
RE: Script TCL + SQL - par MenzAgitat - 06/12/2013, 15:16
RE: Script TCL + SQL - par KiBa - 06/12/2013, 15:21
RE: Script TCL + SQL - par CrazyCat - 06/12/2013, 15:59
RE: Script TCL + SQL - par KiBa - 06/12/2013, 16:13
RE: Script TCL + SQL - par CrazyCat - 06/12/2013, 17:10
RE: Script TCL + SQL - par KiBa - 09/12/2013, 14:49
RE: Script TCL + SQL - par KiBa - 11/12/2013, 17:13
RE: Script TCL + SQL - par BdS - 12/12/2013, 10:58
RE: Script TCL + SQL - par KiBa - 12/12/2013, 11:41
RE: Script TCL + SQL - par CrazyCat - 13/12/2013, 14:05
RE: Script TCL + SQL - par KiBa - 13/12/2013, 16:39
RE: Script TCL + SQL - par CrazyCat - 14/12/2013, 12:36
RE: Script TCL + SQL - par KiBa - 17/12/2013, 11:16
RE: Script TCL + SQL - par CrazyCat - 17/12/2013, 11:20
RE: Script TCL + SQL - par KiBa - 17/12/2013, 11:31
RE: Script TCL + SQL - par CrazyCat - 17/12/2013, 12:19
RE: Script TCL + SQL - par KiBa - 18/12/2013, 15:16
RE: Script TCL + SQL - par KiBa - 23/12/2013, 17:54
RE: Script TCL + SQL - par CrazyCat - 26/12/2013, 09:41
RE: Script TCL + SQL - par KiBa - 06/01/2014, 11:15
RE: Script TCL + SQL - par CrazyCat - 06/01/2014, 11:27
RE: Script TCL + SQL - par KiBa - 06/01/2014, 12:23

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté