Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 107.25 KB | None | 0 0
  1. # Gestion.Bot v2.0 Final Par alias_angelius.
  2. #
  3. # Projet réalisé dans le but que le TCL soit possible pour un débutant tel que moi même si j'ai obtenu des aides et explications.
  4. #
  5. # Certaines Idées venant de certaines commandes du script sont de diverses personnes telles que :
  6. # CrazyCat,Artix,MenzAgitat,Xem,BeussAy,Pain,OpTiXPrO.
  7. #
  8. # Et certaines aides venant de ces personnes la aussi, je tien tout particulièrement
  9. # À remercier l'équipes de Modération de eggdrop.fr pour leur aides/explications sur diverses
  10. # Commandes et explications sur le fonctionnement de certaines commandes.
  11. #
  12. # Idée de passer le TCL en namespace : MenzAgitat.
  13. # Idée de faire un système d’array pour divers message : Artix.
  14. # Idée de passer par une double procédure par exemple comme dans le cas du kickban : MenzAgitat.
  15. # Idée de faire un système de forcing join lors de la diffusion d'un message (infoline) : CrazyCat.
  16. # Idée de faire passer les binds pub/msg en namespace current : BeussAy.
  17. # Idée de faire un level op qui et accès sur tout les salons du Robot avec le tcl : OpTiXPrO.
  18. # Idée de faire un système de authlist : Pain.
  19. #
  20. # Et d'autres personnes m'ont suggéré de faire certaines choses dans le TCL si je ne l'ai pas fait c'est
  21. # Qu'il existe déjà un script TCL correspondant à ceci ou alors que l'utilité de ce qui m'a été demandé
  22. # N'était pas en rapport avec le but de la fonction de mon TCL.
  23. #
  24. # Donc je tiens à signaler que le TCL Gestion.Bot v2.0 Final a été testé sur deux réseaux irc différents :
  25. #
  26. # Réseaux Orange : type ircu (TCL tester sur le salon  #Trip sans aucun soucis tout fonctionne).
  27. # Réseaux Zeolia : type unreal (TCL tester sur le salon #Trip sans aucun soucis tout fonctionne).
  28. #
  29. # Donc maintenant il ne vous reste plus qu'à remplir la partie variable log commande préfixe et admin.
  30. #
  31. # Donc pour ce qui concerne le lancement du TCL c'est assez simple il vous suffira de taper deux commandes :
  32. #
  33. # .gbon "commandes à taper sur salon pour activer le TCL sinon certaines commandes ne seront et ne pourront pas être exécutées".
  34. # Ensuite tapez /msg <pseudo-de-votre-bot> help "ceci vous donnera une aide détaillée sur les commandes diverses de votre
  35. # Eggdrop ce qu'il pourra exécuter en commande avec le TCL selon votre level bien sûr".
  36. # NB : à savoir il faut vous authentifier avant de faire cela donc : /msg <pseudo-de-votre-bot> auth <votre-pseudo> <pass> .
  37. #
  38. # À partir de là il ne vous reste plus qu'à tester les commandes.
  39. #
  40. # Le but du TCL lorsque j'ai codé avec l'aide que l'on m'a apportée :
  41. # 1 : Permettre aux personnes ne sachant pas coder de prendre exemple dessus s’ils le désirent.
  42. # 2 : Pouvoir modifier le TCL à votre guise mais en laissant le nom de l'auteur dans le putlog tout de même.
  43. # 3 : Le TCL peux aider selon les fonctions pour un salon pour se op/deop etc.
  44. # Voici l'un des buts principaux du TCL en espérant que cela vous conviendra.
  45. #
  46. # alias_angelius.
  47. #
  48. # Good Fun.
  49.  
  50. # Conditions Générales d'Utilisations Du TCL.
  51. #
  52. # Maintenant petite explication sur les conditions général d'utilisation du TCL Gestion.Bot.
  53. #
  54. # Donc comme je l'ai dit au dessus ils vous et possible de modifier le script TCL et même de pouvoir l'améliorer ou autre.
  55. # Mais ce que je voudrai ne pas voir c'est que le putlog soit changer en remplaçant le pseudonyme de l'auteur du TCL donc "alias_angelius"
  56. # Ceci ne vous apportera rien.. Et je ne ferais aucunes aides si j’apprends ceci.
  57. #
  58. # Autre information si jamais il vous viendrez à l'idée de ripper vous gêner pas surtout mais si ça fonctionne pas
  59. # Ne venez pas demander de l'aide.
  60. #
  61. # Information il faut accepter les conditions que je viens de donner et de mettre "oui" au niveau de
  62. # Conditions Générales d'Utilisations ci dessous.
  63. #
  64. # Fin de l'explication.
  65.  
  66. namespace eval GB {
  67.    
  68.     # Pseudo Admin du Bot #
  69.     variable admin "ton-pseudo"
  70.     # Salon de log #
  71.     variable log "#salon-de-log"
  72.     # Commande Prefix Permet de choisir la commande par défault soit "." ou "!" #
  73.     set commande(choix) "."
  74.     # Conditions Général d'Utilisations #
  75.     set CGU "non"
  76.  
  77.     # Array Message #
  78.  
  79.     array set msg {
  80.          "pvmsg" "Bonjour Je suis le Robot de Gestion\nOn vient de te créer un Access dans ma base de données\nDonc je te conseille de taper la commande qui suit\n/msg Pseudo-Du-Bot conf\nCeci t'aidera pour les premiers pas pour configurer ton mot de passe par exemple\nSi vous ne l'avez pas encore effectué sinon ceci ne vous servira à rien de le tapez\nFin de l'aide.\nPS: Pseudo-Du-Bot (à remplacer par mon pseudo)."
  81.          "bl" "\0034Tu es banni du salon. \00314( \0031Blackliste\00314 )"
  82.          "kick" "Vous venez d'être kické par $nick sur $chan !"
  83.          "kickban" "Exclu(e) de $chan !"
  84.          "nc" "~ Exp/Notice-Chan ~ Pas de notice salon svp"
  85.          "level" "Vous n'avez pas le level suffisant dans $::botnick pour utiliser cette commande $nick !"
  86.          "salon" "Désolé $nick mais le salon que tu demandes est inconnu !"
  87.          "auth" "Avant d'utiliser la commande veuillez vous authentifier au préalable merci : ( /msg $::botnick auth <pseudo> <pass> )"
  88.          "access" "Désolé $nick mais je ne trouve pas ton accès dans ma base de données !"
  89.          "botdeop" "Désolé je ne peux pas exécuter la commande je suis déop sur $chan !"
  90.          "nosalon" "Désolé $nick mais je suis absent du salon $chan !"
  91.          "pseudo" "Désolé mais le pseudonyme demandé n'est pas sur $chan !"
  92.          "nochan" "Désolé $nick mais je ne te vois pas sur $chan !"
  93.          "nopseudo" "Désolé mais vous n'êtes pas présent sur le salon $chan !"
  94.          "iso" "Désolé $nick mais tu me demandes quelque chose alors que tu l'es déjà sur $chan !"
  95. }  
  96.  
  97.     # Setudef #
  98.  
  99.          setudef flag GB
  100.  
  101.     # Retour de Procédure Idée et aide venant de MenzAgitat #
  102.  
  103.     # Retour Proc Kickban #
  104.  
  105.     proc ban_user {nick host chan} {
  106.         putquick "MODE $chan +b [::GB::hostmask_process $nick $host 2]"
  107.         putquick "KICK $chan $nick [subst -nocommands -nobackslashes $::GB::msg(kickban)]"
  108. }
  109.  
  110.     # Procédure inspiré du Anti-Frenzy de MenzAgitat #
  111.  
  112.     proc ::GB::hostmask_process {nick host type} {
  113.          set fullhost "$nick!$host"
  114.          set nick "*" ; set ident "*" ; set host "*"
  115.          scan $fullhost "%\[^!\]!%\[^@\]@%s" nick ident host
  116.          set nick [join [string trimleft $nick "@+"]]
  117.          set ident [join [string trimleft $ident "~"]]
  118.          set hostmask $host
  119.     if { [regexp {([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)} $host] } {
  120.          set host [lreplace [split $host .] end end *]
  121.     } else {
  122.          set host [split $host .]
  123.     if { [llength $host] == 3 } { set host [lreplace $host 0 0 *] }
  124.     if { [llength $host] > 3 } { set host [lreplace $host 0 1 *] }
  125.     }
  126.          set domain [join $host .]
  127.     switch "$type" {
  128.          "0" { return "*!$ident@$hostmask" }
  129.          "1" { return "*!*$ident@$hostmask" }
  130.          "2" { return "*!*@$hostmask" }
  131.          "3" { return "*!*$ident@$domain" }
  132.          "4" { return "*!*@$domain" }
  133.          "5" { return "$nick!*$ident@$hostmask" }
  134.          "6" { return "$nick!*$ident@$hostmask" }
  135.          "7" { return "$nick!*@$hostmask" }
  136.          "8" { return "$nick!*$ident@$domain" }
  137.          "9" { return "$nick!*@$domain" }
  138.          "10" { return "*!$ident@$domain" }
  139.          "11" { return "*!$ident@*.IP" }
  140.          "12" { return "*!$ident@*.EpiK" }
  141.     }
  142.     if {[set resultmask $nick!$ident@$fullhost] eq "*!*@*"} { return "invalid!host@mask" }
  143.     return $resultmask
  144. }
  145.  
  146.     # PL #
  147.  
  148.     proc opco {hand idx} {
  149.          putquick "privmsg $::GB::log :\0031\[\00312Connection\0031\] \0034$hand \0033vien de se connecter a la \0036Party-Line.\0036"
  150.          dccbroadcast "\00312Connection PL Autorisé pour \0034$hand\0034"
  151. }
  152.  
  153.     proc opdeco {hand idx} {
  154.          putquick "privmsg $::GB::log :\0031\[\00312Déconection\0031\] \0034$hand \0033vien de se déconecter de la \0036Part-Line.\0036"
  155.          dccbroadcast "\00312Déconnection PL pour \0034$hand\0034"
  156. }
  157.  
  158.     # Auth #
  159.  
  160.     proc auth { nick host hand arg } {
  161.          set args [split $arg]
  162.          set chan [lindex $arg 0]
  163.          set pseudo [lindex $arg 0]
  164.     if {[llength $args] != 2} {
  165.          puthelp "notice $nick :\002Erreur :\002 ( /msg $::botnick auth <pseudo> <pass> )"
  166.     return 0
  167.     }
  168.          set password [lindex $args 1]
  169.     if { [nick2hand $pseudo] eq "*" } {
  170.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  171.     return 0
  172.     }
  173.     if {![passwdok $pseudo $password]} {
  174.          puthelp "notice $nick :\002Erreur :\002 Votre mot de pass ou/et votre pseudo est/sont incorrect(s) !"
  175.     return 0
  176.     }
  177.     if {![string match -nocase [lindex [getuser $pseudo HOSTS] 0] $nick!$host]} {
  178.          puthelp "notice $nick :\002Erreur :\002 Votre host ne correspond pas avec votre access !"
  179.     return 0
  180.     }
  181.     if {[getuser $pseudo XTRA AUTH] eq "ON"} {
  182.          puthelp "notice $nick :\002Erreur :\002 Vous êtes déjà authentifier !"
  183.     return 0
  184.     }
  185.     if {[getuser $hand XTRA SUSPEND] eq "ON"} {
  186.          puthelp "notice $nick :\002Erreur :\002 Vous êtes suspendu !"
  187.     return 0
  188.     }      
  189.          puthelp "notice $nick :\0031\[AUTHENTIFICATION REUSSIE\]\0031 Vous êtes maintenant authentifié !"
  190.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Auth\0036\] \0031par : \0034$hand"
  191.          putquick "invite $nick $::GB::log"
  192.          setuser $pseudo XTRA AUTH ON;
  193.          setuser $hand XTRA SEEN [clock format [clock seconds] -format "le %d/%m/%Y à %Hh%M"]
  194.          save
  195.     return
  196. }
  197.  
  198.     # Deauth #
  199.  
  200.     proc deauth { nick host hand arg } {
  201.          set chan [lindex $arg 0]
  202.     if {[getuser $hand XTRA auth] eq "ON"} {
  203.          puthelp "notice $nick :\0031\[DEAUTHENTIFICATION REUSSIE\]\0031 Vous êtes maintenant deauthentifié !"
  204.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Deauth\0036\] \0031par : \0034$hand"
  205.          setuser $hand XTRA AUTH OFF;
  206.          save
  207.     return
  208.     }
  209. }
  210.  
  211.     # Isauth #
  212.  
  213.     proc [namespace current]::isauth {hand} {
  214.     if {[getuser $hand XTRA AUTH] eq "OFF"} {return 0}
  215.     if {[getuser $hand XTRA AUTH] eq "ON"} {return 1}
  216. }
  217.  
  218.     # Addsuspend #
  219.  
  220.     proc addsuspend {nick host hand arg} {
  221.     if {![matchattr $hand o]} {
  222.          putserv "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  223.     return 0
  224.     }
  225.          set arg [split $arg]
  226.          set login [lindex $arg 0]
  227.     if {$login==""} {
  228.          puthelp "notice $nick :\002/msg $::botnick addsuspend\002<login>"
  229.          puthelp "notice $nick :\002Exemple :\002/msg $botnick addsuspend $::GB::admin"
  230.     return 0
  231.     }
  232.     if { [nick2hand $login] eq "*" } {
  233.          puthelp "notice $nick :\002ADDSUSPEND\002: Le login \002$login\002 a aucun accès."
  234.     return 0
  235.     }
  236.     if {[getuser $login XTRA suspend]=="ON"} {
  237.          puthelp "notice $nick :\002ADDSUSPEND\002: Le login \002$login\002 est déjà suspendu."
  238.     return 0
  239.     }
  240.          setuser $login XTRA SUSPEND ON
  241.          puthelp "notice $nick :\002ADDSUSPEND\002: \002$login\002 a été suspendu."
  242.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Addsuspend\0036\] \0031ajouté par : \0034$hand pour $login"
  243.     return
  244. }
  245.  
  246.     # Delsuspend #
  247.  
  248.     proc delsuspend {nick host hand arg} {
  249.     if {![matchattr $hand o|]} {
  250.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  251.     return 0
  252.     }
  253.          set arg [split $arg]
  254.          set login [lindex $arg 0]
  255.     if {$login==""} {
  256.          puthelp "notice $nick :\002/msg $botnick delsuspend\002<login>"
  257.          puthelp "notice $nick :\002Exemple :\002/msg $botnick delsuspend $::GB::admin"
  258.     return 0
  259.     }
  260.     if { [nick2hand $login] eq "*" } {
  261.          puthelp "notice $nick :\002DELSUSPEND\002 : Le login \002$login\002 a aucun accès."
  262.     return 0
  263.     }
  264.     if {[getuser $login XTRA suspend]=="OFF"} {
  265.          puthelp "notice $nick :\002DELSUSPEND\002 : Le login \002$login\002 n'est pas suspendu."
  266.     return 0
  267.     }
  268.          setuser $login XTRA SUSPEND OFF
  269.          puthelp "notice $nick :\002DELSUSPEND\002 : \002$login\002 n'est plus suspendu."
  270.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Delsuspend\0036\] \0031retiré par : \0034$hand pour $login"
  271.     return
  272. }
  273.  
  274.     # Deauth Part #
  275.  
  276.     proc partdeauth { nick uhost hand chan {msg ""}} {
  277.     if {[matchattr $hand o|o $chan] && [isauth $hand]} {
  278.          setuser $hand XTRA AUTH OFF
  279.          puthelp "notice $nick :Déauthentification suite à votre part du salon.."
  280.          putserv "privmsg $::GB::log :\00314Déauthentification \0036suite au part de \0031: \0034$hand"
  281.     }
  282. }
  283.  
  284.     # Deauth Quit #
  285.  
  286.     proc quitdeauth { nick uhost hand chan {msg ""}} {
  287.     if {[matchattr $hand o|o $chan] && [isauth $hand]} {
  288.          setuser $hand XTRA AUTH OFF
  289.          putserv "privmsg $::GB::log :\00314Déauthentification \0036suit au quit de \0031: \0034$hand"
  290.     }
  291. }
  292.  
  293.     # Deauth Join #
  294.  
  295.     proc joindeauth {nick host hand chan} {
  296.     if {$nick=="$::botnick"} {
  297.          putserv "privmsg $::GB::log :\0034Réinitialisation des accès, tous les authentifiés ont été deauth par sécurité.\0034"
  298.     foreach user [userlist * $chan] {
  299.          setuser $user XTRA AUTH OFF
  300.         }
  301.     }
  302. }
  303.  
  304.     # Blacklist #
  305.  
  306.     # Création et Gestion Db #
  307.  
  308.     if ![file exist database/blacklist.db] {
  309.          set load [open database/blacklist.db w+]
  310.     close fcreate
  311.          putlog "\2Je créé le blacklist.db\2"
  312. }
  313.  
  314.     if ![file exist database/exempt.db] {
  315.          set load [open database/exempt.db w+]
  316.     close fcreate
  317.          putlog "\2Je créé le exempt.db\2"
  318. }
  319.  
  320.      proc progfile {file action arg} {
  321.          set return 0
  322.          set dbr [open database/$file.db r+]
  323.          set dbw [open tmp.tmp w+]
  324.     while {![eof $dbr]} {
  325.          set r [gets $dbr]
  326.     if {$r!=""} {puts $dbw $r}
  327.     }
  328.     close $dbr
  329.     close $dbw
  330.          set dbr [open tmp.tmp r+]
  331.          set dbw [open database/$file.db w+]
  332.     while {![eof $dbr]} {
  333.          set r [gets $dbr]
  334.     if {$action=="add"} {
  335.     if {$r!=""} {
  336.     puts $dbw $r
  337.     } else {
  338.     puts $dbw $arg
  339.     }
  340.          set return 1
  341.     }
  342.     if {$action=="del"} {
  343.     if {$r!=""} {
  344.     if {![string match -nocase $arg [lindex $r 0]] && ![string match -nocase $arg [lindex $r 1]]} {
  345.     puts $dbw $r
  346.     } else {
  347.          set return 1
  348.             }
  349.         }
  350.     }
  351.     if {$action=="chk"} {
  352.     if {$r!=""} {
  353.     puts $dbw $r
  354.     if [string match -nocase [lindex $arg 0] [lindex $r 1]] {
  355.          set return [lindex $r 0]
  356.     if ![string match -nocase [lindex $arg 1] [lindex $r 2]] {set return 2}
  357.     if ![string match [lindex $arg 2] [lindex $r 3]] {set return 3}
  358.             }
  359.         }
  360.     }
  361.     if {$action=="icr"} {
  362.     if {$r!=""} {
  363.     puts $dbw $r
  364.     if [string match -nocase $arg [lindex $r 0]] {
  365.          set return 1
  366.             }
  367.         }
  368.     }
  369.     if {$action=="cf"} {
  370.     if {$r!=""} {
  371.     puts $dbw $r
  372.     if [string match -nocase [lindex $r 0] $arg] {
  373.          set return 1
  374.             }
  375.         }
  376.     }
  377.     if {$action=="ibr"} {
  378.     if {$r!=""} {
  379.     puts $dbw $r
  380.     if [string match -nocase $arg [lindex $r 1]] {
  381.          set return 1
  382.                 }
  383.             }
  384.         }
  385.  
  386.     }
  387.     close $dbr
  388.     close $dbw
  389.     return $return
  390. }
  391.  
  392.     # Add blacklist #
  393.  
  394.     proc +blacklist {nick uhost hand chan args} {
  395.          set verifexempt "[split [lindex $args 0] |]"
  396.          set nickverife "[lindex $verifexempt 0]"
  397.     if {[channel get $chan GB]==0} { return; }
  398.     if {[lindex $args 0]!=""} {
  399.     if {[progfile blacklist icr $nickverife]!="0"} {
  400.          puthelp "notice $nick :Attention le Nick: \2$nickverife\2 est déjà dans la Blacklist ou ne peux etre Blackliste."
  401.     return 0
  402.     }
  403.     if {[progfile exempt icr $nickverife]!="0"} {
  404.          puthelp "notice $nick :Attention le Nick: \2$nickverife\2 Ne peux être ajouter a la Blackliste."
  405.     return 0
  406.     }
  407.          progfile blacklist add $nickverife
  408.          puthelp "notice $nick :Le Nick: \2$nickverife\2 a bien été ajouté à la blacklist."
  409.          putquick "privmsg $chan :\00314Le pseudo\002\0031 $nickverife\002 \00314a bien était ajouter au pseudo des (\0034Blackliste\00314)"
  410.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Blacklist\0036\] \0031ajouté par : \0034$hand"
  411.     return 0
  412.     } else {
  413.          puthelp "privmsg $chan :Il faut une victime"
  414.     return 0
  415.     }
  416. }
  417.  
  418.     # Del Blacklist #
  419.  
  420.     proc -blacklist {nick uhost hand chan args} {
  421.          set verifexempt "[split [lindex $args 0] |]"
  422.          set nickverife "[lindex $verifexempt 0]"
  423.     if {[channel get $chan GB]==0} { return; }
  424.     if {[lindex $args 0]!=""} {
  425.     if {[progfile blacklist del $nickverife]!="1"} {
  426.          puthelp "notice $nick :Attention le Nick: \2$nickverife\2 n'est pas dans la Blacklist."
  427.     return 0
  428.     }
  429.          progfile blacklist del $nickverife
  430.          puthelp "notice $nick :Le Nick: \2$nickverife\2 a bien été supprimé de la blacklist."
  431.          putquick "privmsg $chan :\00314Le pseudo\002\0031 $nickverife\002 \00314a bien était retiré au pseudo des (\0034Blackliste\00314)"
  432.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Blacklist\0036\] \0031retiré par : \0034$hand"
  433.     return 0
  434.     } else {
  435.          puthelp "privmsg $chan :Il faut une victime"
  436.     return
  437.     }
  438. }
  439.  
  440.     # List Blacklist #
  441.  
  442.     proc .blacklist {nick uhost hand chan args} {
  443.          set nickb [lindex $args 0]
  444.          set blusers [open database/blacklist.db r]
  445.     if {[channel get $chan GB]==0} { return; }
  446.          putserv "notice $nick :\2Voici la Blacklist:\2"
  447.          putserv "notice $nick :\2\2"
  448.     while {![eof $blusers]} {
  449.          set bluser [gets $blusers]
  450.     if {$bluser!="" && $nickb==""} {
  451.          putserv "notice $nick :\2Nick:\2 $bluser"
  452.     } elseif [string match -nocase $nickb $bluser] {
  453.          putserv "notice $nick :\2Nick:\2 $bluser."
  454.         }
  455.     }
  456.          putserv "notice $nick :\2Fin de la Blacklist\2."
  457.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Blacklist\0036\] \0031par : \0034$hand"
  458.     close $blusers
  459.          putserv "notice $nick :\2\2"
  460. }
  461.  
  462.     # Add Exempt #
  463.  
  464.     proc +exempt {nick uhost hand chan args} {
  465.          set verifexempt "[split [lindex $args 0] |]"
  466.          set nickverife "[lindex $verifexempt 0]"
  467.     if {[channel get $chan GB]==0} { return; }
  468.     if {[lindex $args 0]!=""} {
  469.     if {[progfile exempt icr $nickverife]!="0"} {
  470.          putserv "notice $nick :Attention le Nick: \2$nickverife\2 est déjà dans la liste des protégés."
  471.     return 0
  472.     }
  473.          progfile exempt add $nickverife
  474.          puthelp "notice $nick :Le Nick: \2$nickverife\2 a bien été ajouté à la liste des protégés."
  475.          putquick "privmsg $chan :\00314Le pseudo\002\0031 $nickverife\002 \00314a bien était ajouter au pseudo des (\0034Protégés\00314)"
  476.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Exempt\0036\] \0031ajouté par : \0034$hand"
  477.     return 0
  478.     } else {
  479.          puthelp "privmsg $chan :Il faut une victime"
  480.     return 0
  481.     }
  482. }
  483.  
  484.     # Del Exempt #
  485.  
  486.     proc -exempt {nick uhost hand chan args} {
  487.          set verifexempt "[split [lindex $args 0] |]"
  488.          set nickverife "[lindex $verifexempt 0]"
  489.     if {[channel get $chan GB]==0} { return; }
  490.     if {[lindex $args 0]!=""} {
  491.     if {[progfile exempt del $nickverife]!="1"} {
  492.          putserv "notice $nick :Attention le Nick: \2$nickverife\2 n'est pas dans la liste des protégés."
  493.     return 0
  494.     }
  495.          progfile exempt del $nickverife
  496.          puthelp "notice $nick :Le Nick: \2$nickverife\2 a bien été supprimé de la listes des protégés."
  497.          putquick "privmsg $chan :\00314Le pseudo\002\0031 $nickverife\002 \00314a bien était retiré au pseudo des (\0034Protégés\00314)"
  498.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Exempt\0036\] \0031retiré par : \0034$hand"
  499.     return 0
  500.     } else {
  501.          puthelp "privmsg $chan :Il faut une victime"
  502.     return
  503.     }
  504. }
  505.  
  506.     # List Exempt #
  507.  
  508.     proc .exempt {nick uhost hand chan args} {
  509.          set nickb [lindex $args 0]
  510.          set blusers [open database/exempt.db r]
  511.     if {[channel get $chan GB]==0} { return; }
  512.          putserv "notice $nick :\2Voici la ExemptList:\2"
  513.          putserv "notice $nick :\2\2"
  514.     while {![eof $blusers]} {
  515.          set bluser [gets $blusers]
  516.     if {$bluser!="" && $nickb==""} {
  517.          putserv "notice $nick :\2Nick:\2 $bluser"
  518.     } elseif [string match -nocase $nickb $bluser] {
  519.          putserv "notice $nick :\2Nick:\2 $bluser."
  520.         }
  521.     }
  522.          putserv "notice $nick :\2Fin de la ExemptList\2."
  523.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Exempt\0036\] \0031par : \0034$hand"
  524.     close $blusers
  525.          putserv "notice $nick :\2\2"
  526. }
  527.  
  528.     # Join #
  529.  
  530.     proc xbl {n u h c} {
  531.          set k [lindex [split $n |] 0]
  532.     if {[progfile blacklist cf $k]=="1"} {
  533.          set vnick $n
  534.          set hostmask "[split [getchanhost $vnick $c] @]"
  535.          set hostmask "!*@*[lindex $hostmask 1]"
  536.          pushmode $c +b $hostmask
  537.          pushmode $c +b $k!*@*
  538.          pushmode $c +b $k|*!*@*
  539.          puthelp "kick $c $vnick :[subst -nocommands -nobackslashes $::GB::msg(bl)]"
  540.     }
  541. }
  542.  
  543.     # AddChan/DelChan/ListChan Msg #
  544.  
  545.     proc addchan { nick host hand text } {
  546.          set chan [lindex $text 0]
  547.          set channel [lindex $text 1]
  548.     if { [nick2hand $nick] eq "*" } {
  549.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  550.     return 0
  551.    }
  552.     if {![isauth $hand]} {
  553.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  554.     return 0
  555.     }
  556.     if {$text==""} {
  557.          puthelp "notice $nick :Addchan incorrect ! Veuillez respecter la syntaxe suivante : ( /msg $::botnick addchan <#salon> ) !"
  558.     }
  559.     if ![matchattr $hand o [lindex $text 0]] {
  560.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  561.     return 0
  562.    }
  563.     if ![string match -nocase $chan] {
  564.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Add-Chan\0036\] \0031par : \0034$hand"
  565.          putserv "notice $nick :$chan Rajouter au Addchan !"
  566.          channel add $chan
  567.          savechannels
  568.     return
  569.     }
  570. }
  571.  
  572.     # Delchan #
  573.  
  574.     proc delchan { nick host hand text } {
  575.          set chan [lindex $text 0]
  576.          set channel [lindex $text 1]
  577.     if { [nick2hand $nick] eq "*" } {
  578.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  579.     return 0
  580.    }
  581.     if {![isauth $hand]} {
  582.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  583.     return 0
  584.     }
  585.     if {$text==""} {
  586.          puthelp "notice $nick :Addchan incorrect ! Veuillez respecter la syntaxe suivante : ( /msg $::botnick delchan <#salon> ) !"
  587.     }
  588.     if ![matchattr $hand o [lindex $text 0]] {
  589.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  590.     return 0
  591.    }
  592.     if ![string match -nocase $chan] {
  593.          putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Del-Chan\0036\] \0031par : \0034$hand"
  594.          putserv "notice $nick :$chan Retiré des Addchan !"
  595.          channel remove $chan
  596.          savechannels
  597.     return
  598.     }
  599. }
  600.    
  601.     # ListChan #
  602.  
  603.     proc listchan { nick host hand text } {
  604.          set chan [lindex $text 0]
  605.          set chans [join [lrange [split $text] 0 0]]
  606.     if { [nick2hand $nick] eq "*" } {
  607.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  608.     return 0
  609.     }
  610.     if {![isauth $hand]} {
  611.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  612.     return 0
  613.     }
  614.     if ![matchattr $hand o| [lindex $text 0]] {
  615.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  616.     return 0
  617.     }    
  618.     if [string match -nocase $chans $chan] {
  619.          set voir 1
  620.          putquick "privmsg $nick :\0034\[Liste Salons\]"
  621.     foreach liste [channels] {
  622.          putquick "privmsg $nick :\0037=>\0032 $voir \0037<= \0033 $liste"
  623.     incr voir 1
  624.     }
  625.          putquick "privmsg $nick :\0036\[Fin De Liste\]"
  626.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033List-Chan\0036\] \0031par : \0034$hand"
  627.     return 0
  628.     }
  629.     if {[lsearch [channels] $chans $chan]==-1} {
  630.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  631.      return
  632.     }
  633. }
  634.    
  635.     # Access/Newpass #
  636.  
  637.     proc access { nick host hand text } {
  638.          set chan [lindex $text 0]
  639.          set mask [lindex $text 1]
  640.     if {[channel get $chan GB]==0} { return; }
  641.     if { [nick2hand $nick] eq "*" } {
  642.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  643.     return 0
  644.     }
  645.     if {![isauth $hand]} {
  646.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  647.     return 0
  648.     }
  649.     if ![string match #* $chan] {
  650.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick access <#salon> <mask> )"
  651.     return 0
  652.     }
  653.     if {$mask==""} {
  654.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick access <#salon> <mask> )"
  655.     return 0
  656.     }
  657.     if ![validchan $chan] {
  658.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  659.     return 0
  660.     }
  661.     if ![matchattr $hand o|o [lindex $text 0]] {
  662.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  663.     return 0
  664.     }
  665.          putserv "privmsg $nick :Liste des access de $chan correspondant à \0031\[ \0034$mask \0031\] :"
  666.     foreach user [userlist |n $chan] {
  667.     if [string match -nocase $mask $user] {
  668.          putserv "privmsg $nick :Owner $user"
  669.         }
  670.     }
  671.     foreach user [userlist |m $chan] {
  672.     if ![matchattr $user |n $chan]&&[string match -nocase $mask $user] {
  673.          putserv "privmsg $nick :Master $user"
  674.         }
  675.     }
  676.     foreach user [userlist |o $chan] {
  677.     if ![matchattr $user |m $chan]&&[string match -nocase $mask $user] {
  678.          putserv "privmsg $nick :Operateur $user"
  679.         }
  680.     }
  681.     foreach user [userlist o|] {
  682.     if [string match -nocase $mask $user] {
  683.          putserv "privmsg $nick :SuperOp $user"
  684.         }
  685.     }
  686.          putserv "privmsg $nick :Fin de la liste d'access."
  687.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Access\0036\] \0031par : \0034$hand"
  688.     return
  689. }
  690.  
  691.     # Newpass #
  692.  
  693.     proc newpass { nick uhost hand text } {
  694.     if { [nick2hand $nick] eq "*" } {
  695.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  696.     return 0
  697.     }
  698.     if {![isauth $hand]} {
  699.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  700.     return 0
  701.     }
  702.     if {$text==""} {
  703.          puthelp "notice $nick :Ancien mot de passe incorrect ! Veuillez respecter la syntaxe suivante : ( /msg $::botnick newpass <ancien-pass> <nouveau-pass> ) !"
  704.     }
  705.     if {[getuser $hand PASS]==""} {
  706.          setuser $hand PASS [lindex $text 0]
  707.          puthelp "notice $nick :Mot de passe défini : [lindex $text 0] !"
  708.     return 0
  709.     }
  710.     if {[passwdok $hand [lindex $text 0]]} {
  711.     if {[llength $text]>1} {
  712.          setuser $hand PASS [lindex $text 1]
  713.          puthelp "notice $nick :Nouveau mot de passe défini : [lindex $text 1] !"
  714.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033New-Pass\0036\] \0031par : \0034$hand"
  715.     return
  716.         }    
  717.     }
  718. }
  719.  
  720.     # Addop/Addmaster/Addowner/Addsuperop Msg #
  721.  
  722.     proc addop { nick host hand text } {
  723.          set vhand [lindex [split [lindex $text 0] |] 0]
  724.          set chan [lindex $text 1]
  725.     if {[channel get $chan GB]==0} { return; }
  726.     if { [nick2hand $nick] eq "*" } {
  727.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  728.     return 0
  729.     }
  730.     if ![isauth $hand] {
  731.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  732.     return 0
  733.     }
  734.     if {![string match #* $chan]} {
  735.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick addop <pseudo> <#salon> ) !"
  736.     return 0
  737.     }
  738.     if ![validchan $chan] {
  739.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  740.     return 0
  741.     }
  742.     if ![matchattr $hand o|m $chan] {
  743.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  744.     return 0
  745.     }
  746.     if [matchattr $vhand |n $chan] {
  747.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Owners sur $chan !"
  748.     return 0
  749.     }
  750.     if [matchattr $vhand |m $chan] {
  751.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Masters sur $chan !"
  752.     return 0
  753.     }
  754.     if [matchattr $vhand |o $chan] {
  755.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Opérateurs sur $chan !"
  756.     return 0
  757.     }
  758.     if [matchattr $vhand |m $chan] {
  759.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Masters sur $chan !"
  760.     return 0
  761.     }
  762.          adduser $vhand $vhand*!*@*
  763.          setuser $vhand HOSTS $vhand!*@*
  764.          setuser $vhand HOSTS $vhand|*!*@*
  765.          chattr  $vhand -h|+o $chan
  766.          foreach line [split $::GB::msg(pvmsg) "\n"] {
  767.          putserv "privmsg $vhand :$line"
  768.         }
  769.          puthelp "notice $nick :$vhand a bien été ajouté(e) en tant qu'opérateur sur $chan !"
  770.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Add-Op\0036\] \0031par : \0034$hand"
  771.          save
  772. }
  773.  
  774.     # Addmaster #
  775.  
  776.     proc addmaster { nick uhost hand text } {
  777.          set vhand [lindex [split [lindex $text 0] |] 0]
  778.          set chan [lindex $text 1]
  779.     if {[channel get $chan GB]==0} { return; }
  780.     if { [nick2hand $nick] eq "*" } {
  781.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  782.     return 0
  783.     }
  784.     if {![isauth $hand]} {
  785.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  786.     return 0
  787.     }
  788.     if {![string match #* $chan]} {
  789.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick addmaster <pseudo> <#salon> ) !"
  790.     return 0
  791.     }
  792.     if ![validchan $chan] {
  793.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  794.     return 0
  795.     }
  796.     if ![matchattr $hand o|n $chan] {
  797.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  798.     return 0
  799.     }
  800.     if ![validuser [lindex $text 0]] {
  801.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List"
  802.     return 0
  803.     }
  804.          adduser $vhand [lindex $text 0]*!*@*
  805.          setuser $vhand HOSTS [lindex $text 0]!*@*
  806.          setuser $vhand HOSTS [lindex $text 0]|*!*@*
  807.          chattr  $vhand -h|+om [lindex $text 1]
  808.          foreach line [split $::GB::msg(pvmsg) "\n"] {
  809.          putserv "privmsg $vhand :$line"
  810.         }
  811.          puthelp "notice $nick :[lindex $text 0] a bien été ajouté(e) en tant que Master sur [lindex $text 1] !"
  812.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Add-Master\0036\] \0031par : \0034$hand"
  813.          save
  814.     return
  815. }
  816.  
  817.     # Addowner #
  818.  
  819.     proc addowner { nick uhost hand text } {
  820.          set vhand [lindex [split [lindex $text 0] |] 0]
  821.          set chan [lindex $text 1]
  822.     if {[channel get $chan GB]==0} { return; }
  823.     if { [nick2hand $nick] eq "*" } {
  824.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  825.     return 0
  826.     }
  827.     if {![isauth $hand]} {
  828.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  829.     return 0
  830.     }
  831.     if {![string match #* $chan]} {
  832.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick addowner <pseudo> <#salon> ) !"
  833.     return 0
  834.     }
  835.     if ![validchan $chan] {
  836.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  837.     return 0
  838.     }
  839.     if ![matchattr $hand o| $chan] {
  840.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  841.     return 0
  842.     }
  843.     if {![validuser [lindex $text 0]]} {
  844.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List"
  845.     return 0
  846.     }
  847.          adduser $vhand [lindex $text 0]*!*@*
  848.          setuser $vhand HOSTS [lindex $text 0]!*@*
  849.          setuser $vhand HOSTS [lindex $text 0]|*!*@*
  850.          chattr  $vhand -h|+on [lindex $text 1]
  851.          foreach line [split $::GB::msg(pvmsg) "\n"] {
  852.          putserv "privmsg $vhand :$line"
  853.         }
  854.          puthelp "notice $nick :[lindex $text 0] a bien été ajouté(e) en tant que Owner sur [lindex $text 1] !"
  855.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Add-Owner\0036\] \0031par : \0034$hand"
  856.          save
  857.     return 0
  858.     }
  859.  
  860. # Addsuperop #
  861.  
  862.      proc addsuperop { nick host hand text } {
  863.          set vhand [lindex [split [lindex $text 0] |] 0]
  864.          set chan [lindex $text 1]
  865.     if { [nick2hand $nick] eq "*" } {
  866.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  867.     return 0
  868.     }
  869.     if ![isauth $hand] {
  870.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  871.     return 0
  872.     }
  873.     if ![matchattr $hand o|] {
  874.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  875.     return 0
  876.     }
  877.          adduser $vhand $vhand*!*@*
  878.          setuser $vhand HOSTS $vhand!*@*
  879.          setuser $vhand HOSTS $vhand|*!*@*
  880.          chattr  $vhand +o
  881.          chattr $vhand -h|
  882.          foreach line [split $::GB::msg(pvmsg) "\n"] {
  883.          putserv "privmsg $vhand :$line"
  884.         }
  885.          puthelp "notice $nick :$vhand a bien été ajouté(e) en tant que SuperOp sur $::botnick !"
  886.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Add-Superop\0036\] \0031par : \0034$hand"
  887.          save
  888. }
  889.  
  890.     # Delop/Delmaster/Delowner/Delsuperop #
  891.  
  892.     # Delop #
  893.  
  894.     proc delop { nick uhost hand text } {
  895.          set vhand [lindex [split [lindex $text 0] |] 0]
  896.          set chan [lindex $text 1]
  897.     if {[channel get $chan GB]==0} { return; }
  898.     if { [nick2hand $nick] eq "*" } {
  899.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  900.     return 0
  901.     }
  902.     if {![isauth $hand]} {
  903.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  904.     return 0
  905.     }
  906.     if {![string match #* $chan]} {
  907.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick delop <pseudo> <#salon> ) !"
  908.     return 0
  909.     }
  910.     if ![validchan $chan] {
  911.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  912.     return 0
  913.     }
  914.     if ![matchattr $hand o|m $chan] {
  915.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  916.     return 0
  917.     }
  918.     if ![matchattr $vhand |o $chan] {
  919.          puthelp "notice $nick :Ce pseudo ne figure pas dans l'Access-List de $chan !"
  920.     return 0
  921.     }
  922.     if [matchattr $vhand |n $chan] {
  923.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Owners sur $chan !"
  924.     return 0
  925.     }
  926.     if [matchattr $vhand |m $chan] {
  927.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Masters sur $chan !"
  928.     return 0
  929.     }
  930.          delchanrec $vhand $chan
  931.          puthelp "notice $nick :[lindex $text 0] a bien été supprimé(e) de l'Access-List Opérateurs sur [lindex $text 1] !"
  932.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Del-Op\0036\] \0031par : \0034$hand"
  933.          save
  934.     foreach c [channels] {
  935.     if [haschanrec $vhand $c] {
  936.     return
  937.         }
  938.     }
  939.          deluser $vhand
  940.          save
  941. }
  942.  
  943.     # Delmaster #
  944.  
  945.     proc delmaster { nick uhost hand text } {
  946.          set vhand [lindex [split [lindex $text 0] |] 0]
  947.          set chan [lindex $text 1]
  948.     if {[channel get $chan GB]==0} { return; }
  949.     if { [nick2hand $nick] eq "*" } {
  950.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  951.     return 0
  952.     }
  953.     if {![isauth $hand]} {
  954.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  955.     return 0
  956.     }
  957.     if {![string match #* $chan]} {
  958.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick delmaster <pseudo> <#salon> ) !"
  959.     return 0
  960.     }
  961.     if ![validchan $chan] {
  962.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  963.     return 0
  964.     }
  965.     if ![matchattr $hand o|n $chan] {
  966.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  967.     return 0
  968.     }
  969.     if ![matchattr $vhand |o $chan] {
  970.          puthelp "notice $nick :Ce pseudo ne figure pas dans l'Access-List de $chan !"
  971.     return 0
  972.     }
  973.     if [matchattr $vhand |n $chan] {
  974.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Owners sur $chan !"
  975.     return 0
  976.     }
  977.     if ![matchattr $vhand |m $chan] {
  978.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Masters sur $chan !"
  979.     return 0
  980.     }
  981.          delchanrec $vhand $chan
  982.          puthelp "notice $nick :[lindex $text 0] a bien été supprimé(e) de l'Access-List Master sur [lindex $text 1] !"
  983.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Del-Master\0036\] \0031par : \0034$hand"
  984.          save
  985.     foreach c [channels] {
  986.     if [haschanrec $vhand $c] {
  987.      return
  988.         }
  989.     }
  990.          deluser $vhand
  991.          save
  992. }
  993.  
  994.     # Delowner #
  995.  
  996.     proc delowner { nick uhost hand text } {
  997.          set vhand [lindex [split [lindex $text 0] |] 0]
  998.          set chan [lindex $text 1]
  999.     if {[channel get $chan GB]==0} { return; }
  1000.     if { [nick2hand $nick] eq "*" } {
  1001.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1002.     return 0
  1003.     }
  1004.     if {![isauth $hand]} {
  1005.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1006.     return 0
  1007.     }
  1008.     if {![string match #* $chan]} {
  1009.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick delowner <pseudo> <#salon> ) !"
  1010.     return 0
  1011.     }
  1012.     if ![validchan $chan] {
  1013.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1014.     return 0
  1015.     }
  1016.     if ![matchattr $hand o| $chan] {
  1017.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1018.     return 0
  1019.     }
  1020.     if ![matchattr $vhand |o $chan] {
  1021.          puthelp "notice $nick :Ce pseudo ne figure pas dans l'Access-List de $chan !"
  1022.     return 0
  1023.     }
  1024.     if ![matchattr $vhand |n $chan] {
  1025.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Owners sur $chan !"
  1026.     return 0
  1027.     }
  1028.     if ![matchattr $vhand |m $chan] {
  1029.          puthelp "notice $nick :Ce pseudo figure dans l'Access-List Master sur $chan !"
  1030.     return 0
  1031.     }
  1032.          delchanrec $vhand $chan
  1033.          puthelp "notice $nick :[lindex $text 0] a bien été supprimé(e) de l'Access-List Owner sur [lindex $text 1] !"
  1034.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Del-Owner\0036\] \0031par : \0034$hand"
  1035.          save
  1036.     foreach c [channels] {
  1037.     if [haschanrec $vhand $c] {
  1038.     return
  1039.         }
  1040.     }
  1041.          deluser $vhand
  1042.          save
  1043. }
  1044.  
  1045.     # Delsuperop #
  1046.  
  1047.     proc delsuperop { nick host hand text } {
  1048.          set vhand [lindex [split [lindex $text 0] |] 0]
  1049.          set chan [lindex $text 1]
  1050.     if { [nick2hand $nick] eq "*" } {
  1051.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1052.     return 0
  1053.     }
  1054.     if ![isauth $hand] {
  1055.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1056.     return 0
  1057.     }
  1058.     if ![matchattr $hand o] {
  1059.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1060.     return 0
  1061.     }
  1062.          deluser $vhand
  1063.          puthelp "notice $nick :$vhand a bien été supprimé en tant que superop sur $::botnick !"
  1064.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Del-Superop\0036\] \0031par : \0034$hand"
  1065.          save
  1066. }
  1067.  
  1068.     # op/deop/voice/devoice Chan #
  1069.  
  1070.     # op #
  1071.  
  1072.     proc op { nick host hand chan text } {
  1073.     if {[channel get $chan GB]==0} { return; }
  1074.     if { [nick2hand $nick] eq "*" } {
  1075.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1076.     return 0
  1077.     }
  1078.     if {![isauth $hand]} {
  1079.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1080.     return 0
  1081.     }
  1082.     if {$text!=""} {
  1083.     if ![matchattr $hand o|o $chan] {
  1084.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1085.     return 0
  1086.     }
  1087.          pushmode $chan +oooooo [join $text]
  1088.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Op\0036\] \0031par : \0034$hand"
  1089.     return 0
  1090.     }
  1091.     if [isop [join $nick] $chan] {
  1092.          putserv "NOTICE $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1093.     return 0
  1094.     }
  1095.          pushmode $chan +o [join $nick]
  1096.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Op\0036\] \0031par : \0034$hand"
  1097. }
  1098.  
  1099.     # Deop #
  1100.  
  1101.     proc deop { nick host hand chan text } {
  1102.          set verifexempt "[split [lindex $text 0] |]"
  1103.          set nickverife "[lindex $verifexempt 0]"
  1104.     if {[channel get $chan GB]==0} { return; }
  1105.     if { [nick2hand $nick] eq "*" } {
  1106.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1107.     return 0
  1108.     }
  1109.     if {![isauth $hand]} {
  1110.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1111.     return 0
  1112.     }
  1113.     if {$text!=""} {
  1114.     if {![matchattr $hand o|o $chan]} {
  1115.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1116.     return 0
  1117.     }
  1118.     if {[progfile exempt icr $nickverife]!="0"} {
  1119.          putserv "notice $nick :Attention le Nick: \2[lindex $text 0]\2 est dans la liste des protégés."
  1120.     return 0
  1121.     }
  1122.          pushmode $chan -oooooo [join $text]
  1123.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Deop\0036\] \0031par : \0034$hand"
  1124.     return 0
  1125.     }
  1126.     if {![isop [join $nick] $chan]} {
  1127.          putserv "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1128.     return 0
  1129.     }
  1130.          pushmode $chan -o [join $nick]
  1131.          puthelp "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Deop\0036\] \0031par : \0034$hand"
  1132. }
  1133.  
  1134.     # Voice #
  1135.  
  1136.     proc voice { nick host hand chan text } {
  1137.     if {[channel get $chan GB]==0} { return; }
  1138.     if { [nick2hand $nick] eq "*" } {
  1139.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1140.     return 0
  1141.     }
  1142.     if {![isauth $hand]} {
  1143.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1144.     return 0
  1145.     }
  1146.     if {![matchattr $hand o|o $chan]} {
  1147.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1148.     return 0
  1149.     }
  1150.     if {$text!=""} {
  1151.          putserv "mode $chan +vvvvvv [join $text]"
  1152.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Voice\0036\] \0031par : \0034$hand"
  1153.     return 0
  1154.     }
  1155.     if [isvoice [join $nick] $chan] {
  1156.          putserv "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1157.     return 0
  1158.     }
  1159.          pushmode $chan +v [join $nick]
  1160.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Voice\0036\] \0031par : \0034$hand"
  1161. }
  1162.  
  1163.     # Devoice #
  1164.  
  1165.     proc devoice { nick host hand chan text } {
  1166.          set verifexempt "[split [lindex $text 0] |]"
  1167.          set nickverife "[lindex $verifexempt 0]"
  1168.     if {[channel get $chan GB]==0} { return; }
  1169.     if { [nick2hand $nick] eq "*" } {
  1170.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1171.     return 0
  1172.     }
  1173.     if {![isauth $hand]} {
  1174.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1175.     return 0
  1176.     }
  1177.     if {![matchattr $hand o|o $chan]} {
  1178.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1179.     return 0
  1180.     }
  1181.     if {[progfile exempt icr $nickverife]!="0"} {
  1182.          putserv "notice $nick :Attention le Nick: \2[lindex $text 0]\2 est dans la liste des protégés."
  1183.     return 0
  1184.     }
  1185.     if {$text!=""} {
  1186.          pushmode $chan -vvvvvv [join $text]
  1187.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Devoice\0036\] \0031par : \0034$hand"
  1188.     return 0
  1189.     }
  1190.     if {![isvoice [join $nick] $chan]} {
  1191.          putserv "NOTICE $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1192.     return 0
  1193.     }
  1194.          pushmode $chan -v [join $nick]
  1195.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Devoice\0036\] \0031par : \0034$hand"
  1196. }
  1197.  
  1198.     # Opall/Deopall/Voiceall/Devoiceall Chan #
  1199.  
  1200.     # Opall #
  1201.  
  1202.     proc opall {nick host hand chan arg} {
  1203.          set arg [split $arg]
  1204.     if {[channel get $chan GB]==0} { return; }
  1205.     if { [nick2hand $nick] eq "*" } {
  1206.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1207.     return 0
  1208.     }
  1209.     if {![isauth $hand]} {
  1210.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1211.     return 0
  1212.     }
  1213.     if {![matchattr $hand o|m $chan]} {
  1214.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1215.     return 0
  1216.     }
  1217.     foreach opall [chanlist $chan] { if [isop $opall $chan] continue; pushmode $chan +o $opall }
  1218.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Op-All\0036\] \0031par : \0034$hand"
  1219.     return
  1220. }
  1221.  
  1222.     # Deopall #
  1223.  
  1224.     proc deopall { nick host hand chan arg } {
  1225.          set arg [split $arg]
  1226.     if {[channel get $chan GB]==0} { return; }
  1227.     if { [nick2hand $nick] eq "*" } {
  1228.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1229.     return 0
  1230.     }
  1231.     if {![isauth $hand]} {
  1232.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1233.     return 0
  1234.     }
  1235.     if {![matchattr $hand o|m $chan]} {
  1236.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1237.     return 0
  1238.     }
  1239.     foreach deopall [chanlist $chan] { if [isvoice $deopall $chan] continue; pushmode $chan -o $deopall }
  1240.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Deop-All\0036\] \0031par : \0034$hand"
  1241.     return
  1242. }
  1243.  
  1244.     # voiceall #
  1245.  
  1246.     proc voiceall { nick host hand chan arg } {
  1247.          set arg [split $arg]
  1248.     if {[channel get $chan GB]==0} { return; }
  1249.     if { [nick2hand $nick] eq "*" } {
  1250.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1251.     return 0
  1252.     }
  1253.     if {![isauth $hand]} {
  1254.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1255.     return 0
  1256.     }
  1257.     if {![matchattr $hand o|m $chan]} {
  1258.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1259.     return 0
  1260.     }
  1261.     foreach voiceall [chanlist $chan] { if [isop $voiceall $chan] continue; pushmode $chan +v $voiceall }
  1262.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Voice-All\0036\] \0031par : \0034$hand"
  1263.     return
  1264. }
  1265.  
  1266.     # Devoiceall #
  1267.  
  1268.     proc devoiceall { nick host hand chan arg } {
  1269.          set arg [split $arg]
  1270.     if {[channel get $chan GB]==0} { return; }
  1271.     if { [nick2hand $nick] eq "*" } {
  1272.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1273.     return 0
  1274.     }
  1275.     if {![isauth $hand]} {
  1276.          puthelp "notice $nick :Veuillez vous identifier au préalable ! ( /msg $::botnick auth <pseudo> <pass> ) !"
  1277.     return 0
  1278.     }
  1279.     if {![matchattr $hand o|m $chan]} {
  1280.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1281.     return 0
  1282.     }
  1283.     foreach devoiceall [chanlist $chan] { if [isop $devoiceall $chan] continue; pushmode $chan -v $devoiceall }
  1284.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Devoice-All\0036\] \0031par : \0034$hand"
  1285.     return
  1286. }
  1287.    
  1288.     # Opall/Deopall/Voiceall/Devoiceall Msg #
  1289.  
  1290.     # Opall #
  1291.  
  1292.     proc xopall { nick host hand text } {
  1293.          set chan [lindex $text 0]
  1294.     if { [nick2hand $nick] eq "*" } {
  1295.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1296.     return 0
  1297.     }
  1298.     if {![isauth $hand]} {
  1299.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1300.     return 0
  1301.     }
  1302.     if {![string match #* [lindex $text 0]]} {
  1303.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick opall <#salon> ) !"
  1304.     return 0
  1305.     }
  1306.     if {![validchan [lindex $text 0]]} {
  1307.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1308.     return 0
  1309.     }
  1310.     if {![matchattr $hand o|m [lindex $text 0]]} {
  1311.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1312.     return 0
  1313.     }
  1314.     if {![botonchan [lindex $text 0]]} {
  1315.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1316.     return 0
  1317.     }
  1318.     if {![botisop [lindex $text 0]]} {
  1319.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1320.     return 0
  1321.     }
  1322.     if {![onchan $nick [lindex $text 0]]} {
  1323.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1324.     return 0
  1325.     }
  1326.     if {[isop [join $nick] [lindex $text 0]]} {
  1327.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1328.     return 0
  1329.     }
  1330.     foreach xopall [chanlist $chan] { if [isop $xopall $chan] continue; pushmode $chan +o $xopall }
  1331.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Op-All\0036\] \0031par : \0034$hand"
  1332. }
  1333.    
  1334.     # Deopall #
  1335.  
  1336.     proc xdeopall { nick host hand text } {
  1337.          set chan [lindex $text 0]
  1338.     if { [nick2hand $nick] eq "*" } {
  1339.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1340.     return 0
  1341.     }
  1342.     if {![isauth $hand]} {
  1343.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1344.     return 0
  1345.     }
  1346.     if {![string match #* [lindex $text 0]]} {
  1347.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick deopall <#salon> ) !"
  1348.     return 0
  1349.     }
  1350.     if {![validchan [lindex $text 0]]} {
  1351.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1352.     return 0
  1353.     }
  1354.     if {![matchattr $hand o|m [lindex $text 0]]} {
  1355.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1356.     return 0
  1357.     }
  1358.     if {![botonchan [lindex $text 0]]} {
  1359.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1360.     return 0
  1361.     }
  1362.     if {![botisop [lindex $text 0]]} {
  1363.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1364.     return 0
  1365.     }
  1366.     if {![onchan $nick [lindex $text 0]]} {
  1367.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1368.     return 0
  1369.     }
  1370.     foreach xdeopall [chanlist $chan] { if [isvoice $xdeopall $chan] continue; pushmode $chan -o $xdeopall }
  1371.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Deop-All\0036\] \0031par : \0034$hand"
  1372. }
  1373.    
  1374.     # Voiceall #
  1375.  
  1376.     proc xvoiceall { nick host hand text } {
  1377.          set chan [lindex $text 0]
  1378.     if { [nick2hand $nick] eq "*" } {
  1379.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1380.     return 0
  1381.     }
  1382.     if {![isauth $hand]} {
  1383.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1384.     return 0
  1385.     }
  1386.     if {![string match #* [lindex $text 0]]} {
  1387.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick voiceall <#salon> ) !"
  1388.     return 0
  1389.     }
  1390.     if {![validchan [lindex $text 0]]} {
  1391.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1392.     return 0
  1393.     }
  1394.     if {![matchattr $hand o|m [lindex $text 0]]} {
  1395.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1396.     return 0
  1397.     }
  1398.     if {![botonchan [lindex $text 0]]} {
  1399.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1400.     return 0
  1401.     }
  1402.     if {![botisop [lindex $text 0]]} {
  1403.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1404.     return 0
  1405.     }
  1406.     if {![onchan $nick [lindex $text 0]]} {
  1407.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1408.     return 0
  1409.     }
  1410.     foreach xvoiceall [chanlist $chan] { if [isop $xvoiceall $chan] continue; pushmode $chan +v $xvoiceall }
  1411.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Voice-All\0036\] \0031par : \0034$hand"
  1412. }
  1413.    
  1414.     # Devoiceall #
  1415.  
  1416.     proc xdevoiceall { nick host hand text } {
  1417.          set chan [lindex $text 0]
  1418.     if { [nick2hand $nick] eq "*" } {
  1419.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1420.     return 0
  1421.     }
  1422.     if {![isauth $hand]} {
  1423.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1424.     return 0
  1425.     }
  1426.     if {![string match #* [lindex $text 0]]} {
  1427.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick devoiceall <#salon> ) !"
  1428.     return 0
  1429.     }
  1430.     if {![validchan [lindex $text 0]]} {
  1431.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1432.     return 0
  1433.     }
  1434.     if {![matchattr $hand o|m [lindex $text 0]]} {
  1435.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1436.     return 0
  1437.     }
  1438.     if {![botonchan [lindex $text 0]]} {
  1439.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1440.     return 0
  1441.     }
  1442.     if {![botisop [lindex $text 0]]} {
  1443.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1444.     return 0
  1445.     }
  1446.     if {![onchan $nick [lindex $text 0]]} {
  1447.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1448.     return 0
  1449.     }
  1450.     foreach xdevoiceall [chanlist $chan] { if [isop $xdevoiceall $chan] continue; pushmode $chan -v $xdevoiceall }
  1451.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Devoice-All\0036\] \0031par : \0034$hand"
  1452. }
  1453.  
  1454.     # op/deop/voice/devoice Msg #
  1455.  
  1456.     # Op #
  1457.  
  1458.     proc xop { nick host hand text } {
  1459.          set chan [lindex $text 0]
  1460.     if {[channel get $chan GB]==0} { return; }
  1461.     if { [nick2hand $nick] eq "*" } {
  1462.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1463.     return 0
  1464.     }
  1465.     if {![isauth $hand]} {
  1466.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1467.     return 0
  1468.     }
  1469.     if {![string match #* [lindex $text 0]]} {
  1470.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick op <#salon> <pseudo(s)> )"
  1471.     return 0
  1472.     }
  1473.     if {![validchan [lindex $text 0]]} {
  1474.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1475.     return 0
  1476.     }
  1477.     if {![matchattr $hand o|o [lindex $text 0]]} {
  1478.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1479.     return 0
  1480.     }
  1481.     if {![botonchan [lindex $text 0]]} {
  1482.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1483.     return 0
  1484.     }
  1485.     if {![botisop [lindex $text 0]]} {
  1486.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1487.     return 0
  1488.     }
  1489.     if {[lindex $text 1]!=""} {
  1490.          pushmode [lindex $text 0] +oooooo [join [lrange $text 1 end]]
  1491.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Op\0036\] \0031par : \0034$hand"
  1492.     return 0
  1493.     }
  1494.     if {![onchan $nick [lindex $text 0]]} {
  1495.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1496.     return 0
  1497.     }
  1498.     if {[isop [join $nick] [lindex $text 0]]} {
  1499.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1500.     return 0
  1501.     }
  1502.          pushmode [lindex $text 0] +o [join $nick]
  1503.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Op\0036\] \0031par : \0034$hand"
  1504. }
  1505.  
  1506.     # Deop #
  1507.  
  1508.     proc xdeop { nick host hand text } {
  1509.          set chan [lindex $text 0]
  1510.          set verifexempt "[split [lindex $text 1] |]"
  1511.          set nickverife "[lindex $verifexempt 0]"
  1512.     if {[channel get $chan GB]==0} { return; }
  1513.     if { [nick2hand $nick] eq "*" } {
  1514.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1515.     return 0
  1516.     }
  1517.     if {![isauth $hand]} {
  1518.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1519.     return 0
  1520.     }
  1521.     if {![string match #* [lindex $text 0]]} {
  1522.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick deop <#salon> <pseudo(s)> ) !"
  1523.     return 0
  1524.     }
  1525.     if {![validchan [lindex $text 0]]} {
  1526.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1527.     return 0
  1528.     }
  1529.     if {![matchattr $hand o|o [lindex $text 0]]} {
  1530.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1531.     return 0
  1532.     }
  1533.     if {![onchan $nick [lindex $text 0]]} {
  1534.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1535.     return 0
  1536.     }
  1537.     if {![botonchan [lindex $text 0]]} {
  1538.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1539.     return 0
  1540.     }
  1541.     if {![botisop [lindex $text 0]]} {
  1542.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1543.     return 0
  1544.     }
  1545.     if {[progfile exempt icr $nickverife]!="0"} {
  1546.          putserv "notice $nick :Attention le Nick: \2$nickverife\2 est dans la liste des protégés."
  1547.     return 0
  1548.     }
  1549.     if {[lindex $text 1] !=""} {
  1550.          pushmode [lindex $text 0] -oooooo [join [lrange $text 1 end]]
  1551.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Deop\0036\] \0031par : \0034$hand"
  1552.     return 0
  1553.     }
  1554.     if {![isop [join $nick] [lindex $text 0]]} {
  1555.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1556.     return 0
  1557.     }
  1558.          pushmode [lindex $text 0] -o [join $nick]
  1559.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Deop\0036\] \0031par : \0034$hand"
  1560. }
  1561.  
  1562.     # Voice #
  1563.  
  1564.     proc xvoice { nick uhost hand text } {
  1565.          set chan [lindex $text 0]
  1566.     if {[channel get $chan GB]==0} { return; }
  1567.     if { [nick2hand $nick] eq "*" } {
  1568.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1569.     return 0
  1570.     }
  1571.     if {![isauth $hand]} {
  1572.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1573.     return 0
  1574.     }
  1575.     if {![string match #* [lindex $text 0]]} {
  1576.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick voice <#salon> <pseudo(s)> ) !"
  1577.     return 0
  1578.     }
  1579.     if {![validchan [lindex $text 0]]} {
  1580.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1581.     return 0
  1582.     }
  1583.     if {![matchattr $hand o|o [lindex $text 0]]} {
  1584.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1585.     return 0
  1586.     }
  1587.     if {![onchan $nick [lindex $text 0]]} {
  1588.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1589.     return 0
  1590.     }
  1591.     if {![botonchan [lindex $text 0]]} {
  1592.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1593.     return 0
  1594.     }
  1595.     if {![botisop [lindex $text 0]]} {
  1596.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1597.     return 0
  1598.     }
  1599.     if {[lindex $text 1] !=""} {
  1600.          pushmode [lindex $text 0] +vvvvvv [join [lrange $text 1 end]]
  1601.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Voice\0036\] \0031par : \0034$hand"
  1602.     return 0
  1603.     }
  1604.     if [isop [join $nick] [lindex $text 0]] {
  1605.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1606.     return 0
  1607.     }
  1608.          pushmode [lindex $text 0] +v [join $nick]
  1609.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Voice\0036\] \0031par : \0034$hand"
  1610. }
  1611.  
  1612.     # Devoice #
  1613.  
  1614.     proc xdevoice { nick host hand text } {
  1615.          set chan [lindex $text 0]
  1616.          set verifexempt "[split [lindex $text 1] |]"
  1617.          set nickverife "[lindex $verifexempt 0]"
  1618.     if {[channel get $chan GB]==0} { return; }
  1619.     if { [nick2hand $nick] eq "*" } {
  1620.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1621.     return 0
  1622.     }
  1623.     if {![isauth $hand]} {
  1624.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1625.     return 0
  1626.     }
  1627.     if {![string match #* [lindex $text 0]]} {
  1628.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $botnick devoice <#salon> <pseudo(s)> ) !"
  1629.     return 0
  1630.     }
  1631.     if {![validchan [lindex $text 0]]} {
  1632.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1633.     return 0
  1634.     }
  1635.     if {![matchattr $hand o|o [lindex $text 0]]} {
  1636.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1637.     return 0
  1638.     }
  1639.     if {![onchan $nick [lindex $text 0]]} {
  1640.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1641.     return 0
  1642.     }
  1643.     if {![botonchan [lindex $text 0]]} {
  1644.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1645.     return 0
  1646.     }
  1647.     if {![botisop [lindex $text 0]]} {
  1648.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1649.     return 0
  1650.     }
  1651.     if {[progfile exempt icr $nickverife]!="0"} {
  1652.          putserv "notice $nick :Attention le Nick: \2$nickverife\2 est dans la liste des protégés."
  1653.     return 0
  1654.     }
  1655.     if {[lindex $text 1] !=""} {
  1656.          pushmode [lindex $text 0] -vvvvvv [join [lrange $text 1 end]]
  1657.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Devoice\0036\] \0031par : \0034$hand"
  1658.     return 0
  1659.     }
  1660.     if ![isvoice [join $nick] [lindex $text 0]] {
  1661.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(iso)]"
  1662.     return 0
  1663.     }
  1664.          pushmode [lindex $text 0] -v [join $nick]
  1665.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Devoice\0036\] \0031par : \0034$hand"
  1666. }
  1667.  
  1668.     # Ban/Kick/Unban/Kickban Chan  #
  1669.  
  1670.     # Ban #
  1671.  
  1672.     proc ban { nick host hand chan text } {
  1673.          set verifexempt "[split [lindex $text 0] |]"
  1674.          set nickverife "[lindex $verifexempt 0]"
  1675.     if {[channel get $chan GB]==0} { return; }
  1676.     if { [nick2hand $nick] eq "*" } {
  1677.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1678.     return 0
  1679.     }
  1680.     if {![isauth $hand]} {
  1681.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1682.     return 0
  1683.     }
  1684.     if {![matchattr $hand o|o $chan]} {
  1685.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1686.     return 0
  1687.     }
  1688.     if {$text == ""} {
  1689.          puthelp "notice $nick :Syntaxe incorrecte ! ( $::GB::commande(choix)ban <pseudo/host> ) !"
  1690.     return 0
  1691.     }
  1692.     if {[progfile exempt icr $nickverife]!="0"} {
  1693.          putserv "notice $nick :Attention le Nick: \2[lindex $text 0]\2 est dans la liste des protégés."
  1694.     return 0
  1695.     }
  1696.     if {[string match *!*@* [lindex $text 0]]} {
  1697.          pushmode $chan +b [lindex $text 0]
  1698.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Ban\0036\] \0031par : \0034$hand"
  1699.     return 0
  1700.     }
  1701.     if {[llength [getchanhost [lindex $text 0]]]!=0} {
  1702.          set host [lindex [split [getchanhost [lindex $text 0]] @] 1]
  1703.          pushmode $chan +b *!*@$host
  1704.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Ban\0036\] \0031par : \0034$hand"
  1705.     return
  1706.     }
  1707.          puthelp "notice $nick :Le pseudo [lindex $text 0] n'est pas sur un de mes salons, je ne peux récupérer son host !"
  1708. }
  1709.  
  1710.     # Kick #
  1711.  
  1712.     proc kick { nick uhost hand chan text } {
  1713.          set Knick "[lindex $text 0]"
  1714.          set verifexempt "[split [lindex $text 0] |]"
  1715.          set nickverife "[lindex $verifexempt 0]"
  1716.     if {[channel get $chan GB]==0} { return; }
  1717.     if { [nick2hand $nick] eq "*" } {
  1718.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1719.     return 0
  1720.     }
  1721.     if {![isauth $hand]} {
  1722.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1723.     return 0
  1724.     }
  1725.     if {![matchattr $hand o|o $chan]} {
  1726.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1727.     return 0
  1728.     }
  1729.     if {$text == ""} {
  1730.          puthelp "notice $nick :Syntaxe : ( $::GB::commande(choix)kick <pseudo> ) !"
  1731.     return 0
  1732.     }
  1733.     if {$text != ""} {
  1734.     if {![onchan [lindex $text 0]]} {
  1735.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1736.     return 0
  1737.     }
  1738.     if {[progfile exempt icr $nickverife]!="0"} {
  1739.          putserv "notice $nick :Attention le Nick: \2[lindex $text 0]\2 est dans la liste des protégés."
  1740.     return 0
  1741.     }
  1742.     if {[lindex $text 1] != ""} {
  1743.          putquick "kick $chan [lindex $text 0] :[join [lrange $text 1 end]]"
  1744.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Kick\0036\] \0031par : \0034$hand"
  1745.     return
  1746.     }
  1747.     if {[lindex $text 1] == ""} {
  1748.          putkick $chan [lindex $text 0] [subst -nocommands -nobackslashes $::GB::msg(kick)]
  1749.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Kick\0036\] \0031par : \0034$hand"
  1750.     return 0
  1751.         }
  1752.     }
  1753. }
  1754.  
  1755.     # Unban #
  1756.  
  1757.     proc unban { nick uhost hand chan text } {
  1758.     if {[channel get $chan GB]==0} { return; }
  1759.     if { [nick2hand $nick] eq "*" } {
  1760.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1761.     return 0
  1762.     }
  1763.     if {![isauth $hand]} {
  1764.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1765.     return 0
  1766.     }
  1767.     if {![matchattr $hand o|o $chan]} {
  1768.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1769.     return 0
  1770.     }
  1771.     if {$text == ""} {
  1772.          puthelp "notice $nick :Syntaxe : ( $::GB::commande(choix)unban <host> ) !"
  1773.     return 0
  1774.     }
  1775.     if {[string match *!*@* [lindex $text 0]]} {
  1776.          pushmode $chan -b [lindex $text 0]
  1777.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Unban\0036\] \0031par : \0034$hand"
  1778.     return 0
  1779.     }
  1780.     if {[llength [getchanhost [lindex $text 0]]]!=0} {
  1781.          set host [lindex [split [getchanhost [lindex $text 0]] @] 1]
  1782.          putquick "mode $chan -b *!*@$host"
  1783.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Unban\0036\] \0031par : \0034$hand"
  1784.     return
  1785.     }
  1786. }
  1787.  
  1788.     # Kickban #
  1789.  
  1790.     proc kickban { nick host hand chan text } {
  1791.          set KBnick "[lindex $text 0]"
  1792.          set host [lindex [split [getchanhost [lindex $text 0]] @] 1]
  1793.          set verifexempt "[split [lindex $text 0] |]"
  1794.          set nickverife "[lindex $verifexempt 0]"
  1795.     if {[channel get $chan GB]==0} { return; }
  1796.     if { [nick2hand $nick] eq "*" } {
  1797.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1798.     return 0
  1799.     }
  1800.     if {![isauth $hand]} {
  1801.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1802.     return 0
  1803.     }
  1804.     if {![matchattr $hand o|o $chan]} {
  1805.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1806.     return 0
  1807.     }
  1808.     if {$text == ""} {
  1809.          puthelp "notice $nick :Syntaxe : ( $::GB::commande(choix)kickban <pseudo> ) !"
  1810.     return 0
  1811.     }
  1812.     if {![onchan [lindex $text 0] $chan]} {
  1813.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1814.     return 0
  1815.     }
  1816.     if {![botisop [lindex $chan]]} {
  1817.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1818.     return 0
  1819.     }
  1820.     if {[progfile exempt icr $nickverife]!="0"} {
  1821.          putserv "notice $nick :Attention le Nick: \2[lindex $text 0]\2 est dans la liste des protégés."
  1822.     return 0
  1823.     }
  1824.         ::GB::ban_user $KBnick *!*@$host $chan
  1825.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Kick-Ban\0036\] \0031par : \0034$hand"
  1826.     return
  1827. }
  1828.  
  1829.     # Ban/Kick/Unban/Kickban MSG #
  1830.  
  1831.     # Ban #
  1832.  
  1833.     proc xban { nick uhost hand arg } {
  1834.          set chan [lindex $arg 0]
  1835.          set cible [lindex $arg 1]
  1836.          set verifexempt "[split [lindex $arg 1] |]"
  1837.          set nickverife "[lindex $verifexempt 0]"
  1838.     if {[channel get $chan GB]==0} { return; }
  1839.     if { [nick2hand $nick] eq "*" } {
  1840.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1841.     return 0
  1842.     }
  1843.     if {![isauth $hand]} {
  1844.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1845.     return 0
  1846.     }
  1847.     if ("[llength $arg]"!="2")||![string match -nocase #* $chan] {
  1848.          puthelp "notice $nick :Syntaxe incorrect ( /msg $::botnick ban <#salon> <pseudo/host> ) !"
  1849.     return 0
  1850.     }
  1851.     if {![validchan [lindex $arg 0]]} {
  1852.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1853.     return 0
  1854.     }
  1855.     if {![matchattr $hand o|o $chan]} {
  1856.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1857.     return 0
  1858.     }
  1859.     if {![botonchan [lindex $arg 0]]} {
  1860.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1861.     return 0
  1862.     }
  1863.     if {![botisop [lindex $arg 0]]} {
  1864.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1865.     return 0
  1866.     }
  1867.     if {[string match *!*@* $cible]} {
  1868.          putquick "mode $chan +b $cible"
  1869.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Ban\0036\] \0031par : \0034$hand"
  1870.     return 0
  1871.     }
  1872.     if {[progfile exempt icr $nickverife]!="0"} {
  1873.          putserv "notice $nick :Attention le Nick: \2$cible\2 est dans la liste des protégés."
  1874.     return 0
  1875.     }
  1876.     if {[llength [getchanhost $cible]]!=0} {
  1877.          set host [lindex [split [getchanhost $cible] @] 1]
  1878.          putquick "mode $chan +b *!*@$host"
  1879.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Ban\0036\] \0031par : \0034$hand"
  1880.     return 0
  1881.     }
  1882.          puthelp "notice $nick :Le pseudo $cible n'est pas sur un de mes salons, je ne peux récupérer son host !"
  1883. }
  1884.  
  1885.     # kick #
  1886.  
  1887.     proc xkick { nick uhost hand text } {
  1888.          set Knick "[lindex $text 0]"
  1889.          set chan [lindex $text 0]
  1890.          set cible [lindex $text 1]
  1891.          set verifexempt "[split [lindex $text 1] |]"
  1892.          set nickverife "[lindex $verifexempt 0]"
  1893.     if {[channel get $chan GB]==0} { return; }
  1894.     if { [nick2hand $nick] eq "*" } {
  1895.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1896.     return 0
  1897.     }
  1898.     if {![isauth $hand]} {
  1899.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1900.     return 0
  1901.     }
  1902.     if {![string match #* [lindex $text 0]]} {
  1903.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $botnick kick <#salon> <pseudo(s)> ) !"
  1904.     return 0
  1905.     }
  1906.     if {![validchan [lindex $text 0]]} {
  1907.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  1908.     return 0
  1909.     }
  1910.     if {![matchattr $hand o|o $chan]} {
  1911.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1912.     return 0
  1913.     }
  1914.     if {![onchan $nick [lindex $text 0]]} {
  1915.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1916.     return 0
  1917.     }
  1918.     if {![botonchan [lindex $text 0]]} {
  1919.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  1920.     return 0
  1921.     }
  1922.     if {![botisop [lindex $text 0]]} {
  1923.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  1924.     return 0
  1925.     }
  1926.     if {![onchan $cible $chan]} {
  1927.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nopseudo)]"
  1928.     return 0
  1929.     }
  1930.     if {[progfile exempt icr $nickverife]!="0"} {
  1931.          puthelp "notice $nick :Attention le Nick: \2[lindex $text 1]\2 est dans la liste des protégés."
  1932.     return 0
  1933.     }
  1934.     if {[lindex $text 2] !=""} {
  1935.          putquick "kick [lindex $text 0] [lindex $text 1] :[join [lrange $text 2 end]]"
  1936.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Kick\0036\] \0031par : \0034$hand"
  1937.     return
  1938.     }
  1939.     if {[onchan [join [lindex $text 1]] [lindex $text 0]]} {
  1940.          putquick "kick [lindex $text 0] [lindex $text 1] :[subst -nocommands -nobackslashes $::GB::msg(kick)]"
  1941.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Kick\0036\] \0031par : \0034$hand"
  1942.      return
  1943.     }
  1944. }
  1945.  
  1946.     # Unban #
  1947.  
  1948.     proc xunban { nick uhost hand arg } {
  1949.          set chan [lindex $arg 0]
  1950.     if {[channel get $chan GB]==0} { return; }
  1951.     if { [nick2hand $nick] eq "*" } {
  1952.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1953.     return 0
  1954.     }
  1955.     if {![isauth $hand]} {
  1956.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1957.     return 0
  1958.     }
  1959.     if {![matchattr $hand o|o $chan]} {
  1960.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1961.     return 0
  1962.     }
  1963.     if {![string match #* [lindex $arg 0]]} {
  1964.          puthelp "notice $nick :Syntaxe : ( /msg $::botnick unban <#salon> <host> ) !"
  1965.     return 0
  1966.     }
  1967.     if {[string match *!*@* [lindex $arg 1]]} {
  1968.          putquick "mode $chan -b [lindex $arg 1]"
  1969.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Unban\0036\] \0031par : \0034$hand"
  1970.     return 0
  1971.     }
  1972.     if {[llength [getchanhost [lindex $arg 0]]]!=0} {
  1973.          set host [lindex [split [getchanhost [lindex $arg 0]] @] 1]
  1974.          putquick "mode $chan -b *!*@$host"
  1975.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Unban\0036\] \0031par : \0034$hand"
  1976.     return 0
  1977.     }
  1978. }
  1979.  
  1980.     # Kickban #
  1981.  
  1982.     proc xkickban { nick uhost hand arg } {
  1983.          set KBnick "[lindex $text 0]"
  1984.          set chan [lindex $arg 0]
  1985.          set verifexempt "[split [lindex $arg 1] |]"
  1986.          set nickverife "[lindex $verifexempt 0]"
  1987.     if {[channel get $chan GB]==0} { return; }
  1988.     if { [nick2hand $nick] eq "*" } {
  1989.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  1990.     return 0
  1991.     }
  1992.     if {![isauth $hand]} {
  1993.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  1994.     return 0
  1995.     }
  1996.     if {![matchattr $hand o|o $chan]} {
  1997.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  1998.     return 0
  1999.     }
  2000.     if {![string match #* [lindex $arg 0]]} {
  2001.          puthelp "notice $nick :Syntaxe : ( /msg $::botnick kickban <#salon> <pseudo> ) !"
  2002.     return 0
  2003.     }
  2004.     if {[progfile exempt icr $nickverife]!="0"} {
  2005.          puthelp "notice $nick :Attention le Nick: \2[lindex $arg 1]\2 est dans la liste des protégés."
  2006.     return 0
  2007.     }
  2008.     if {[llength [getchanhost [lindex $arg 1]]]!=0} {
  2009.          set host [lindex [split [getchanhost [lindex $arg 1]] @] 1]
  2010.          ::GB::ban_user $KBnick *!*@$host $chan
  2011.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Kick-Ban\0036\] \0031par : \0034$hand"
  2012.     return
  2013.     }
  2014. }
  2015.  
  2016.     # Clearban/Mode Chan #
  2017.  
  2018.     # Clearban #
  2019.  
  2020.     proc clearbans { nick host hand chan text } {
  2021.     if {[channel get $chan GB]==0} { return; }
  2022.     if { [nick2hand $nick] eq "*" } {
  2023.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2024.     return 0
  2025.     }
  2026.     if {![isauth $hand]} {
  2027.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2028.     return 0
  2029.     }
  2030.     if {![matchattr $hand o|m $chan]} {
  2031.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2032.     return 0
  2033.     }
  2034.     foreach bsyntaxe [chanbans $chan] {
  2035.          putquick "mode $chan -b [lindex $bsyntaxe 0]"
  2036.     }
  2037.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Clear-Bans\0036\] \0031par : \0034$hand"
  2038. }
  2039.  
  2040.     # Mode #
  2041.  
  2042. proc mode { nick uhost hand chan text } {
  2043.     if {[channel get $chan GB]==0} { return; }
  2044.     if { [nick2hand $nick] eq "*" } {
  2045.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2046.     return 0
  2047.     }
  2048.     if {![isauth $hand]} {
  2049.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2050.     return 0
  2051.     }
  2052.     if {$text!=""} {
  2053.     if {![matchattr $hand o|m $chan]} {
  2054.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2055.     return 0
  2056.     }
  2057.          putquick "mode $chan $text"
  2058.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Mode\0036\] \0031par : \0034$hand"
  2059.     }
  2060. }
  2061.  
  2062.     # Clearbans/Mode Msg #
  2063.  
  2064.     # Clearbans #
  2065.  
  2066.     proc xclearbans { nick host hand text } {
  2067.          set chan [lindex $text 0]
  2068.     if {[channel get $chan GB]==0} { return; }
  2069.     if { [nick2hand $nick] eq "*" } {
  2070.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2071.     return 0
  2072.     }
  2073.     if {![isauth $hand]} {
  2074.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2075.     return 0
  2076.     }
  2077.     if {![string match #* [lindex $text 0]]} {
  2078.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $botnick clearbans <#salon> ) !"
  2079.     return 0
  2080.     }
  2081.     if {![validchan [lindex $text 0]]} {
  2082.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2083.     return 0
  2084.     }
  2085.     if {![matchattr $hand o|m [lindex $text 0]]} {
  2086.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2087.     return 0
  2088.     }
  2089.     if {![botonchan [lindex $text 0]]} {
  2090.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  2091.     return 0
  2092.     }
  2093.     if {![botisop [lindex $text 0]]} {
  2094.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  2095.     return 0
  2096.     }
  2097.     foreach bsyntaxe [chanbans $chan] {
  2098.          putquick "mode $chan -b [lindex $bsyntaxe 0]"
  2099.     }
  2100.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Clear-Bans\0036\] \0031par : \0034$hand"
  2101. }
  2102.  
  2103.     # Mode #
  2104.  
  2105.     proc xmode { nick host hand text } {
  2106.          set chan [lindex $text 0]
  2107.     if {[channel get $chan GB]==0} { return; }
  2108.     if { [nick2hand $nick] eq "*" } {
  2109.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2110.     return 0
  2111.     }
  2112.     if {![isauth $hand]} {
  2113.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2114.     return 0
  2115.     }
  2116.     if {![string match #* [lindex $text 0]]} {
  2117.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $botnick mode <#salon> <mode(s)> ) !"
  2118.     return 0
  2119.     }
  2120.     if {![validchan [lindex $text 0]]} {
  2121.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2122.     return 0
  2123.     }
  2124.     if {$text!=""} {
  2125.     if {![matchattr $hand o|m [lindex $text 0]]} {
  2126.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2127.     return 0
  2128.     }
  2129.     if {![botonchan [lindex $text 0]]} {
  2130.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  2131.     return 0
  2132.     }
  2133.     if {![botisop [lindex $text 0]]} {
  2134.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(botdeop)]"
  2135.     return 0
  2136.     }
  2137.          putquick "mode $chan [lindex $text 1]"
  2138.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Mode\0036\] \0031par : \0034$hand"
  2139.     }
  2140. }
  2141.  
  2142.     # Topic Chan/Msg #
  2143.  
  2144.     # Topic Chan #
  2145.  
  2146.     proc topic { nick host hand chan arg} {
  2147.     if {[channel get $chan GB]==0} { return; }
  2148.     if { [nick2hand $nick] eq "*" } {
  2149.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2150.     return 0
  2151.     }
  2152.  
  2153.     if {![isauth $hand]} {
  2154.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2155.     return 0
  2156.     }
  2157.  
  2158.     if {![matchattr $hand o|o $chan]} {
  2159.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2160.     return 0
  2161.     }
  2162.          putquick "TOPIC $chan :$arg"
  2163.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Topic\0036\] \0031par : \0034$hand"
  2164. }
  2165.  
  2166.     # Topic Msg #
  2167.    
  2168.     proc xtopic { nick host hand text } {
  2169.          set chan [string tolower [lindex $text 0]]
  2170.     if {[channel get $chan GB]==0} { return; }
  2171.     if { [nick2hand $nick] eq "*" } {
  2172.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2173.     return 0
  2174.     }
  2175.     if {![isauth $hand]} {
  2176.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2177.     return 0
  2178.     }
  2179.     if {![string match #* [lindex $text 0]]} {
  2180.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick topic <#chan> <text> ) !"
  2181.     return 0
  2182.     }
  2183.     if {![validchan [lindex $text 0]]} {
  2184.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2185.     return 0
  2186.     }
  2187.     if { [string length $text] ne "" } {
  2188.     if {![matchattr $hand o|o [lindex $text 0]]} {
  2189.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2190.     return 0
  2191.          }
  2192.          putquick "TOPIC $chan :[lindex $text 1 end]"
  2193.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Topic\0036\] \0031par : \0034$hand"
  2194.     }
  2195. }
  2196.    
  2197.     # Infoline #
  2198.  
  2199.     proc infoline { nick host hand arg } {
  2200.          set chan [string tolower [lindex $arg 0]]
  2201.     if {[channel get $chan GB]==0} { return; }
  2202.     if { [nick2hand $nick] eq "*" } {
  2203.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2204.     return 0
  2205.     }
  2206.     if {![isauth $hand]} {
  2207.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2208.     return 0
  2209.     }
  2210.     if {![string match #* [lindex $arg 0]]} {
  2211.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick infoline <#salon> <text> ) !"
  2212.     return 0
  2213.     }
  2214.     if {![validchan [lindex $arg 0]]} {
  2215.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2216.     return 0
  2217.     }
  2218.     if { [string length $arg] ne "" } {
  2219.     if {![matchattr $hand o|o [lindex $arg 0]]} {
  2220.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2221.     return 0
  2222.     }
  2223.          setchaninfo $hand $chan [join [lrange $arg 1 end]]
  2224.          puthelp "notice $nick :Infoline définie :[join [lrange $arg 1 end]]"
  2225.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Info-Line\0036\] \0031par : \0034$hand"
  2226.     }
  2227. }
  2228.  
  2229.     # Message au join Infoline de CrazyCat #
  2230.  
  2231.     proc greet { nick uhost handle chan } {
  2232.     if { ![validuser $handle] } { return; }
  2233.     if { [getchaninfo $handle $chan] ne "" } {
  2234.          putserv "PRIVMSG $chan :\[$nick\] [getchaninfo $handle $chan]"
  2235.    }
  2236.    return
  2237. }
  2238.    
  2239.     # Notice-Chan #
  2240.  
  2241.     proc nonotice_chanoff { nick uhost hand text dest } {
  2242.     if ("$nick"=="")||("$dest"=="$::botnick") {return 0}
  2243.     if [validuser [finduser $nick!*@*]]&&[matchattr $hand o|o $dest] {return 0}
  2244.     if [isop $nick $dest]||[isvoice $nick $dest] {return 0}
  2245.     if ![botisop $dest] {return 0}
  2246.     if [string match -nocase niubot?? $nick] {return 0}
  2247.          set host [lindex [split $uhost @] 1]
  2248.          putquick "mode $dest +b *!*@$host"
  2249.          putquick "kick $dest $nick :[subst -nocommands -nobackslashes $::GB::msg(nc)]"
  2250. }
  2251.    
  2252.     # Amsg #
  2253.  
  2254.     proc amsg { nick host hand chan arg } {
  2255.     if {[channel get $chan GB]==0} { return; }
  2256.     if { [nick2hand $nick] eq "*" } {
  2257.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2258.     return 0
  2259.     }
  2260.     if {![isauth $hand]} {
  2261.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2262.     return 0
  2263.     }
  2264.     if {![matchattr $hand o|n $chan]} {
  2265.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2266.     return 0
  2267.     }
  2268.     foreach c [channels] {
  2269.          putserv "privmsg $c :\0031\[\00314 Information \0031\] \0034$hand \0032: $arg"
  2270.     }
  2271.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)Amsg\0036\] \0031par : \0034$hand"
  2272. }
  2273.  
  2274.     # Activation/Désactivation du TCL #
  2275.  
  2276.     proc gbon { nick host hand chan arg } {
  2277.     if {[channel get $chan GB] == 0} {
  2278.          channel set $chan +GB
  2279.          putquick "PRIVMSG $chan :TCL Activé !"
  2280.     } else {
  2281.          putquick "PRIVMSG $chan :TCL déjà Activé !"
  2282.     }
  2283.          puthelp "privmsg $::GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)gbon\0036\] \0031par : \0034$hand"
  2284. }
  2285.  
  2286.     proc gboff { nick host hand chan arg } {
  2287.     if {[channel get $chan GB] != 0} {
  2288.          channel set $chan -GB
  2289.          putquick "PRIVMSG $chan :TCL Désactivé !"
  2290.     } else {
  2291.          putquick "PRIVMSG $chan :TCL déjà Désactivé !"
  2292.     }
  2293.          puthelp "privmsg $::GB::log :\00314Commande \0036\[\0033$::GB::commande(choix)gboff\0036\] \0031par : \0034$hand"
  2294. }
  2295.    
  2296.     # Auth-List #
  2297.  
  2298.     proc authlist { nick host hand arg } {
  2299.          set chan [string tolower [lindex $arg 0]]
  2300.     if {[channel get $chan GB]==0} { return; }
  2301.     if { [nick2hand $nick] eq "*" } {
  2302.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2303.     return 0
  2304.     }
  2305.     if {![isauth $hand]} {
  2306.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2307.     return 0
  2308.     }
  2309.     if {![string match #* [lindex $arg 0]]} {
  2310.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick authlist <#salon> ) !"
  2311.     return 0
  2312.     }
  2313.     if {![validchan [lindex $arg 0]]} {
  2314.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2315.     return 0
  2316.     }
  2317.     if { [string length $arg] ne "" } {
  2318.     if {![matchattr $hand o|o [lindex $arg 0]]} {
  2319.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2320.     return 0
  2321.     }
  2322.     foreach u [userlist] {
  2323.     if [matchattr $u o|o $chan] {
  2324.     if [isauth $u] {
  2325.          putserv "privmsg $nick :\0031\[\00314$u\0031\] \0031: \0036AUTH \0031: \0033YES"
  2326.     } else {
  2327.          putserv "privmsg $nick :\0031\[\00314$u\0031\] \0031: \0036AUTH \0031: \0034NO"
  2328.                 }
  2329.             }
  2330.         }
  2331.     }
  2332.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Auth-List\0036\] \0031par : \0034$hand"
  2333. }
  2334.          
  2335.     # Say/Me Msg #
  2336.  
  2337.     # Say #
  2338.  
  2339.     proc say { nick uhost hand text } {
  2340.          set chan [string tolower [lindex $text 0]]
  2341.     if {[channel get $chan GB]==0} { return; }
  2342.     if { [nick2hand $nick] eq "*" } {
  2343.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2344.     return 0
  2345.     }
  2346.     if {![isauth $hand]} {
  2347.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2348.     return 0
  2349.     }
  2350.     if {![string match #* [lindex $text 0]]} {
  2351.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick say <#salon> <text> ) !"
  2352.     return 0
  2353.     }
  2354.     if {![validchan [lindex $text 0]]} {
  2355.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2356.     return 0
  2357.     }
  2358.     if {![matchattr $hand o|o $chan]} {
  2359.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2360.     return 0
  2361.     }
  2362.     if {![botonchan [lindex $text 0]]} {
  2363.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  2364.     return 0
  2365.     }
  2366.          set chann "[lindex [channels] [lsearch [string tolower [channels]] [string tolower [lindex $text 0]]]]"
  2367.          putserv "privmsg [lindex $text 0] :[join [lrange $text 1 end]]"
  2368.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Say\0036\] \0031par : \0034$hand"
  2369.     return
  2370. }
  2371.    
  2372.     # Me #
  2373.  
  2374.     proc me { nick uhost hand text } {
  2375.          set chan [string tolower [lindex $text 0]]
  2376.     if {[channel get $chan GB]==0} { return; }
  2377.     if { [nick2hand $nick] eq "*" } {
  2378.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2379.     return 0
  2380.     }
  2381.     if {![isauth $hand]} {
  2382.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
  2383.     return 0
  2384.     }
  2385.     if {![string match #* [lindex $text 0]]} {
  2386.          puthelp "notice $nick :Syntaxe incorrecte ! ( /msg $::botnick me <#salon> <text> ) !"
  2387.     return 0
  2388.     }
  2389.     if {![validchan [lindex $text 0]]} {
  2390.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(salon)]"
  2391.     return 0
  2392.     }
  2393.     if {![matchattr $hand o|o $chan]} {
  2394.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
  2395.     return 0
  2396.     }
  2397.     if {![botonchan [lindex $text 0]]} {
  2398.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
  2399.     return 0
  2400.     }
  2401.          set chann "[lindex [channels] [lsearch [string tolower [channels]] [string tolower [lindex $text 0]]]]"
  2402.          putserv "privmsg [lindex $text 0] :\001ACTION [join [lrange $text 1 end]] \001"
  2403.          putserv "privmsg $GB::log :\00314Commande \0036\[\0033Me\0036\] \0031par : \0034$hand"
  2404.      return
  2405. }
  2406.    
  2407.     # Configuration d'aide en pv #
  2408.  
  2409.     proc conf { nick host hand arg } {
  2410.          set chan [string tolower [lindex $arg 0]]
  2411.     if { [nick2hand $nick] eq "*" } {
  2412.          puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
  2413.     return 0
  2414.     }
  2415.          putserv "privmsg $nick :Bonjour $nick Pour commencer veuillez taper la commande :"
  2416.          putserv "privmsg $nick :/msg $::botnick pass <unpass>"
  2417.          putserv "privmsg $nick :Ensuite pour vous authentifier veuillez taper :"
  2418.          putserv "privmsg $nick :/msg $::botnick auth $nick <votre-pass>"
  2419.          putserv "privmsg $nick :Une fois ceci fait, pour voir un aperçu de mes commandes disponibles auxquelles vous avez accès tapez :"
  2420.          putserv "privmsg $nick :/msg $::botnick help"
  2421.          putserv "privmsg $nick :Fin de l'aide."
  2422. }
  2423.        
  2424.     # Help #
  2425.  
  2426.     proc help { nick host hand arg } {
  2427.          set commande [lindex $arg 1]
  2428.          set commande [stripcodes abcu [lindex $arg 0]]
  2429.     if {$commande == ""} {
  2430.          puthelp "privmsg $nick :\00314Commande Help du Robot \002\0034$::botnick\002\0034"
  2431.     foreach c [channels] {
  2432.     if [matchattr $hand o|o $c] {
  2433.          puthelp "privmsg $nick :\0031\037Level \002Opérateur\002 :\0037"
  2434.          puthelp "privmsg $nick :\00314Auth \0031: \0034Permet de vous identifier auprès du Robot Identifia en MSG !"
  2435.          puthelp "privmsg $nick :\00314Op \0031: \0034Permet de te mettre Opérateur \0031(\00312@\0031) \0034 sur le salon ou en Msg, et pour le faire sur quelqu'un aussi !"
  2436.          puthelp "privmsg $nick :\00314Deop \0031: \0034Permet de te mettre Deop \0031(\00312-@\0031) \0034 sur le salon ou en Msg, et pour le faire sur quelqu'un aussi !"
  2437.          puthelp "privmsg $nick :\00314Voice \0031: \0034Permet de te mettre voice \0031(\0033+v\0031) \0034 sur le salon ou en Msg, et pour le faire sur quelqu'un aussi !"
  2438.          puthelp "privmsg $nick :\00314Devoice \0031: \0034Permet de te mettre Devoice \0031(\0033-v\0031) \0034 sur le salon ou en Msg, et pour le faire sur quelqu'un aussi !"
  2439.          puthelp "privmsg $nick :\00314Kick \0031: \0034Permet de Kick quelqu'un sur un salon défini commande Chan ou Msg !"
  2440.          puthelp "privmsg $nick :\00314Kickban \0031: \0034Permet de Kickban quelqu'un sur un salon défini commande Chan ou Msg !"
  2441.          puthelp "privmsg $nick :\00314Ban \0031: \0034Permet de Ban quelqu'un sur un salon défini commande Chan ou Msg !"
  2442.          puthelp "privmsg $nick :\00314Unban \0031: \0034Permet de Unban quelqu'un sur un salon défini commande Chan ou Msg !"
  2443.          puthelp "privmsg $nick :\00314Access \0031: \0034Permet de regarder la liste d'acces command Msg !"
  2444.          puthelp "privmsg $nick :\00314Deauth \0031: \0034Permet de vous déauthentifier auprès du Robot $::botnick commande Msg !"
  2445.          puthelp "privmsg $nick :\00314Newpass \0031: \0034Permet de changer votre mot de passe auprès du Robot $::botnick commande Msg !"
  2446.          puthelp "privmsg $nick :\00314Infoline \0031: \0034Permet de vous mettre un texte à l'entrée d'un salon commande Msg !"
  2447.          puthelp "privmsg $nick :\00314Topic \0031: \0034Permet de mettre un topic sur un salon défini commande Chan ou Msg !"
  2448.          puthelp "privmsg $nick :\00314Authlist \0031: \0034Permet de regarder qui est authentifié auprès du Robot $::botnick commande Msg !"
  2449.          puthelp "privmsg $nick :\00314Say \0031: \0034Permet d'envoyer un message sous forme de /say sur un salon défini commande Msg !"
  2450.          puthelp "privmsg $nick :\00314Me \0031: \0034Permet d'envoyer un message sous forme de /me sur un salon défini commande en Msg !"        
  2451.      break
  2452.     }
  2453. }
  2454.     foreach c [channels] {
  2455.     if [matchattr $hand o|m $c] {
  2456.          puthelp "privmsg $nick :\0031\037Level \002Master\002 :\037"
  2457.          puthelp "privmsg $nick :\00314Addop \0031: \0034Permet de mettre un user Opérateur sur un salon défini commande Chan ou Msg !"
  2458.          puthelp "privmsg $nick :\00314Delop \0031: \0034Permet de retirer le level Opérateur sur un salon défini commande Chan ou Msg !"
  2459.          puthelp "privmsg $nick :\00314Clearbans \0031: \0034Permet de Clearbans tout les bans sur le salon commande Chan ou Msg !"
  2460.          puthelp "privmsg $nick :\00314Mode \0031: \0034Permet de mettre ou retirer un Mode commande Chan ou Msg !"
  2461.          puthelp "privmsg $nick :\00314Opall \0031: \0034Permet de mettre tout le monde Op commande Chan ou Msg !"
  2462.          puthelp "privmsg $nick :\00314Deopall \0031: \0034Permet de mettre tout le monde Deop commande Chan ou Msg !"
  2463.          puthelp "privmsg $nick :\00314Voiceall \0031: \0034Permet de mettre tout le monde Voice commande Chan ou Msg !"
  2464.          puthelp "privmsg $nick :\00314Devoiceall \0031: \0034Permet de mettre tout le monde Devoice commande Chan ou Msg !"         
  2465.          break
  2466.     }
  2467. }
  2468.     foreach c [channels] {
  2469.     if [matchattr $hand o|n $c] {
  2470.          puthelp "privmsg $nick :\0031\037Level \002Owner\002 :\037"
  2471.          puthelp "privmsg $nick :\00314Addmaster \0031: \0034Permet de mettre un user ou un Opérateur d'un salon le level Master commande Msg !"
  2472.          puthelp "privmsg $nick :\00314Delmaster \0031: \0034Permet de retirer le level Master sur un salon défini commande Msg !"
  2473.          puthelp "privmsg $nick :\00314Amsg \0031: \0034Permet de faire un Amsg sur tout les salons où se situe $::botnick commande Chan seulement sur $::GB::log Il faut taper la commande sinon cela ne fonctionne pas !"      
  2474.      break
  2475.     }
  2476. }
  2477.     foreach c [channels] {
  2478.     if [matchattr $hand o $c] {
  2479.          puthelp "privmsg $nick :\0031\037Level \002SuperOp\002 :\037"
  2480.          puthelp "privmsg $nick :\00314Delowner \0031: \0034Permet de retirer le level Owner sur un salon défini commande Msg !"
  2481.          puthelp "privmsg $nick :\00314Exempt \0031: \0034Permet de mettre/retirer/regarder les pseudos protégés commande Chan !"
  2482.          puthelp "privmsg $nick :\00314Blacklist \0031: \0034Permet de mettre/retirer/regarder la Blacklist commande Chan !"
  2483.          puthelp "privmsg $nick :\00314Addsuspend \0031: \0034Permet de suspendre un accéss commande Msg !"
  2484.          puthelp "privmsg $nick :\00314Delsuspend \0031: \0034Permet de retirer un suspend commande Msg !"
  2485.          puthelp "privmsg $nick :\00314Addchan \0031: \0034Permet de rajouter un autojoin sur un salon au bot commande Msg !"
  2486.          puthelp "privmsg $nick :\00314Delchan \0031: \0034Permet de retirer un salon des autojoin au bot commande Msg !"
  2487.          puthelp "privmsg $nick :\00314Listchan \0031: \0034Permet de regarder la liste des chan en autojoin qu'il y a dans $::botnick commande Msg !"
  2488.          puthelp "privmsg $nick :\00314Addowner \0031: \0034Permet de mettre un user ou Opérateur ou un Master le level Owner commande Msg !"
  2489.          puthelp "privmsg $nick :\00314Addsuperop \0031: \0034Permet de mettre un user ou Opérateur ou Master ou Owner le level SuperOp commande Msg !"
  2490.          puthelp "privmsg $nick :\00314Delsuperop \0031: \0034Permet de retirer le level SuperOp commande Msg !"
  2491.          puthelp "privmsg $nick :\00314Gbon \0031: \0034Permet d'activer le TCL sur un salon défini commande Chan !"
  2492.          puthelp "privmsg $nick :\00314Gboff \0031: \0034Permet de désactiver le TCL sur un salon défini commande Chan !"
  2493.      break
  2494.     }
  2495. }
  2496.          puthelp "privmsg $nick :\00314Exemple de commande à taper pour avoir de l'aide plus détaillée\00314"
  2497.          puthelp "privmsg $nick :\0034/msg $::botnick help op\0034"
  2498.          puthelp "privmsg $nick :\0031\[\0034Info\0031\] \00314Toutes les commandes sont a taper en \002\0031(Minuscules)\002"
  2499.          puthelp "privmsg $nick :\0031\037\002Fin du Help !\002"
  2500.          puthelp "privmsg $GB::log :\00314Commande \0036\[\0033Help\0036\] \0031par : \0034$hand"
  2501.     }
  2502.     switch -- $commande {
  2503. "op" {
  2504.          puthelp "privmsg $nick :\00314Commande Op Chan \0031: \0034$::GB::commande(choix)op \0031ou \0034$::GB::commande(choix)op <pseudo>"
  2505.          puthelp "privmsg $nick :\00314Commande Op Msg \0031: \0034/msg $::botnick op <#salon> \0031ou \0034/msg $::botnick op <#salon> <pseudo>"
  2506.     }
  2507. "deop" {
  2508.          puthelp "privmsg $nick :\00314Commande Deop Chan \0031: \0034$::GB::commande(choix)deop \0031ou \0034$::GB::commande(choix)deop <pseudo>"
  2509.          puthelp "privmsg $nick :\0031Commande Deop Chan \0031: \0034/msg $::botnick deop <#salon> \0031ou \0034/msg $::botnick deop <#salon> <pseudo>"
  2510.     }
  2511. "voice" {
  2512.          puthelp "privmsg $nick :\00314Commande Voice Chan \0031: \0034$::GB::commande(choix)voice \0031ou \0034$::GB::commande(choix)voice <pseudo>"
  2513.          puthelp "privmsg $nick :\00314Commande Voice Msg \0031: \0034/msg $::botnick <voice> <#salon> \0031ou \0034/msg $::botnick <voice> <#salon> <pseudo>"
  2514.     }
  2515. "devoice" {
  2516.          puthelp "privmsg $nick :\00314Commande Devoice Chan \0031: \0034$::GB::commande(choix)devoice \0031ou \0034$::GB::commande(choix)devoice <pseudo>"
  2517.          puthelp "privmsg $nick :\00314Commande Devoice Msg \0031: \0034/msg $::botnick <devoice> <#salon> \0031ou \0034/msg $::botnick devoice <#salon> <pseudo>"
  2518.     }
  2519. "kick" {
  2520.          puthelp "privmsg $nick :\00314Commande Kick Chan \0031: \0034$::GB::commande(choix)kick <pseudo> \0031ou \0034$::GB::commande(choix)kick <pseudo> <raison>"
  2521.          puthelp "privmsg $nick :\00314Commande Kick Msg \0031: \0034/msg $::botnick kick <#salon> <pseudo> \0031ou \0034/msg $::botnick kick <#salon> <pseudo> <raison>"
  2522.     }
  2523. "kickban" {
  2524.          puthelp "privmsg $nick :\00314Commande Kickban Chan \0031: \0034$::GB::commande(choix)kickban <pseudo>"
  2525.          puthelp "privmsg $nick :\00314Commande Kickban Msg \0031: \0034/msg $::botnick kickban <#salon> <pseudo>"
  2526.     }
  2527. "ban" {
  2528.          puthelp "privmsg $nick :\00314Commande Ban Chan \0031: \0034$::GB::commande(choix)ban <pseudo> \0031ou \0034$::GB::commande(choix)ban <host>"
  2529.          puthelp "privmsg $nick :\00314Commande Ban Msg \0031: \0034/msg $::botnick ban <#salon> <host>"
  2530.     }
  2531. "unban" {
  2532.          puthelp "privmsg $nick :\00314Commande Unban Chan \0031: \0034$::GB::commande(choix)unban <pseudo> \ou \0034$::GB::commande(choix)unban <host>"
  2533.          puthelp "privmsg $nick :\00314Commande Unban Msg \0031: \0034/msg $::botnick unban <#salon> <host>"
  2534.     }
  2535. "access" {
  2536.          puthelp "privmsg $nick :\00314Commande Access Msg \0031: \0034/msg $::botnick access <#salon> * \0031ou \0034/msg $::botnick access <#salon> al* \0037Ceci et un exemple le al* cherchera tout les access ayant dans le pseudo (al)"
  2537.     }
  2538. "addop" {
  2539.          puthelp "privmsg $nick :\00314Commande Addop Msg \0031: \0034/msg $::botnick addop <pseudo> <#salon>"
  2540.     }
  2541. "addmaster" {
  2542.          puthelp "privmsg $nick :\00314Commande Addmaster Msg \0031: \0034/msg $::botnick addmaster <pseudo> <#salon>"
  2543.     }
  2544. "addowner" {
  2545.          puthelp "privmsg $nick :\00314Commande Addowner Msg \0031: \0034/msg $::botnick addowner <pseudo> <#salon>"
  2546.     }
  2547. "delop" {
  2548.          puthelp "privmsg $nick :\00314Commande Delop Msg \0031: \0034 /msg $::botnick delop <pseudo> <#salon>"
  2549.     }
  2550. "delmaster" {
  2551.          puthelp "privmsg $nick :\00314Commande Delmaster Msg \0031: \0034/msg $::botnick delmaster <pseudo> <#salon>"
  2552.     }
  2553. "delowner" {
  2554.          puthelp "privmsg $nick :\00314Commande Delowner Msg \0031: \0034/msg $::botnick delowner <pseudo> <#salon>"
  2555.     }
  2556. "clearbans" {
  2557.          puthelp "privmsg $nick :\00314Commande Clearbans Chan \0031: \0034$::GB::commande(choix)clearbans"
  2558.          puthelp "privmsg $nick :\00314Commande Clearbans Msg \0031: \0034/msg $::botnick clearbans <#salon>"
  2559.     }
  2560. "mode" {
  2561.          puthelp "privmsg $nick :\00314Commande Mode Chan \0031: \0034$::GB::commande(choix)mode <le-mode>"
  2562.          puthelp "privmsg $nick :\00314Commande Mode Msg \0031: \0034/msg $::botnick mode <#salon> <mode>"
  2563.     }
  2564. "blacklist" {
  2565.          puthelp "privmsg $nick :\00314Commande Blacklist Chan \0031: \0034$::GB::commande(choix)blacklist"
  2566.          puthelp "privmsg $nick :\00314Commande Blacklist Chan \0031: \0034$::GB::commande(choix)+blacklist <pseudo>"
  2567.          puthelp "privmsg $nick :\00314Commande Blacklist Chan \0031: \0034$::GB::commande(choix)-blacklist <pseudo>"
  2568.     }
  2569. "exempt" {
  2570.          puthelp "privmsg $nick :\00314Commande Exempt Chan \0031: \0034$::GB::commande(choix)exempt"
  2571.          puthelp "privmsg $nick :\00314Commande Exempt Chan \0031: \0034$::GB::commande(choix)+exempt <pseudo>"
  2572.          puthelp "privmsg $nick :\00314Commande Exempt Chan \0031: \0034$::GB::commande(choix)-exempt <pseudo>"
  2573.     }
  2574. "newpass" {
  2575.          puthelp "privmsg $nick :\00314Commande Newpass Msg \0031: \0034/msg $::botnick newpass <ancien-pass> <nouveau-pass>"
  2576.     }
  2577. "opall" {
  2578.          puthelp "privmsg $nick :\00314Commande Opall Chan \0031: \0034$::GB::commande(choix)opall"
  2579.          puthelp "privmsg $nick :\00314Commande Opall Msg \0031: \0034/msg $::botnick opall <#salon>"
  2580.     }
  2581. "deopall" {
  2582.          puthelp "privmsg $nick :\00314Commande Deopall Chan \0031: \0034$::GB::commande(choix)deopall"
  2583.          puthelp "privmsg $nick :\00314Commande Deopall Msg \0031: \0034/msg $::botnick deopall <#salon>"
  2584.     }
  2585. "voiceall" {
  2586.          puthelp "privmsg $nick :\00314Commande Voiceall Chan \0031: \0034$::GB::commande(choix)voiceall"
  2587.          puthelp "privmsg $nick :\00314Commande Voiceall Msg \0031: \0034/msg $::botnick voiceall <#salon>"
  2588.     }
  2589. "devoiceall" {
  2590.          puthelp "privmsg $nick :\00314Commande Devoiceall Chan \0031: \0034$::GB::commande(choix)devoiceall"
  2591.          puthelp "privmsg $nick :\00314Commande Devoiceall Msg \0031: \0034/msg $::botnick devoiceall <#salon>"
  2592.     }
  2593. "addsuspend" {
  2594.          puthelp "privmsg $nick :\00314Commande Addsuspend Msg \0031: \0034/msg $::botnick addsuspend <pseudo>"
  2595.     }
  2596. "delsuspend" {
  2597.          puthelp "privmsg $nick :\00314Commande Delsuspend Msg \0031: \0034/msg $::botnick delsuspend <pseudo>"
  2598.     }
  2599. "addchan" {
  2600.          puthelp "privmsg $nick :\00314Commande Addchan Msg \0031: \0034/msg $::botnick addchan <#salon>"
  2601.     }
  2602. "delchan" {
  2603.          puthelp "privmsg $nick :\00314Commande Delchan Msg \0031: \0034/msg $::botnick delchan <#salon>"
  2604.     }
  2605. "listchan" {
  2606.          puthelp "privmsg $nick :\00314Commande Listchan Msg \0031: \0034/msg $::botnick listchan"
  2607.     }
  2608. "addsuperop" {
  2609.          puthelp "privmsg $nick :\00314Commande Addsuperop Msg \0031: \0034/msg $::botnick addsuperop <pseudo>"
  2610.     }
  2611. "delsuperop" {
  2612.          puthelp "privmsg $nick :\00314Commande Delsuperop Msg \0031: \0034/msg $::botnick delsuperop <pseudo>"
  2613.     }
  2614. "infoline" {
  2615.          puthelp "privmsg $nick :\00314Commande Infoline Msg \0031: \0034/msg $::botnick infoline <#salon> <text>"
  2616.     }
  2617. "amsg" {
  2618.          puthelp "privmsg $nick :\00314Commande Amsg Chan \0031: \0034$::GB::commande(choix)amsg <phrase>"
  2619.     }
  2620. "topic" {
  2621.          puthelp "privmsg $nick :\00314Commande Topic Chan \0031: \0034$::GB::commande(choix)topic <phrase>"
  2622.          puthelp "privmsg $nick :\00314Commande Topic Msg \0031: \0034/msg $::botnick topic <#salon> <text>"
  2623.     }
  2624. "authlist" {
  2625.          puthelp "privmsg $nick :\00314Commande Authlist Msg \0031: \0034/msg $::botnick authlist <#salon>"
  2626.     }
  2627. "gbon" {
  2628.          puthelp "privmsg $nick :\00314Commande Gbon Chan \0031: \0034$::GB::commande(choix)gbon"
  2629.     }
  2630. "gboff" {
  2631.          puthelp "privmsg $nick :\00314Commande Gboff Chan \0031: \0034$::GB::commande(choix)gboff"
  2632.     }
  2633. "say" {
  2634.          puthelp "privmsg $nick :\00314Commande Say Msg \0031: \0034/msg $::botnick say <#salon> <text>"
  2635.          
  2636.     }
  2637. "me" {
  2638.          puthelp "privmsg $nick :\00314Commande Me Msg \0031: \0034/msg $::botnick me <#salon> <text>"
  2639.         }
  2640.     }
  2641.     return
  2642. }
  2643.  
  2644. # Désallocation du TCL #
  2645.  
  2646. variable script_name "Gestion.Bot V2.0 Final"
  2647.  
  2648. if {[info commands ::GB::uninstall] eq "::GB::uninstall"} { ::GB::uninstall }
  2649.  
  2650.     proc uninstall {args} {
  2651.          putlog "Désallocation des ressources de \002$::GB::script_name\002..."
  2652.     foreach binding [lsearch -inline -all -regexp [binds *[set GB [string range [namespace current] 2 end]]*] " \{?(::)?$GB"] {
  2653.          unbind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] [lindex $binding 4]
  2654.     }
  2655.         namespace delete [namespace current]
  2656. }
  2657.  
  2658. if {$CGU!="oui"} {
  2659.     putlog "Conditions Général'Utilisations d Non accepter veuillez les accepters sinon n'utiliser pas le TCL."
  2660.     die "Condition Général d'Utilisations Non Accepter"
  2661. }
  2662.    
  2663.     # Package Requis #
  2664.  
  2665.     if {[catch {package require Tcl 8.5}]} {
  2666.          putlog "\002Gestion.Bot\002 : Vous avez besoin de Tcl en version 8.5 au moins pour pouvoir utiliser ce script."
  2667.     return
  2668. }
  2669.    
  2670.     # Binds #
  2671.  
  2672. bind pub o "$::GB::commande(choix)+blacklist" [namespace current]::+blacklist
  2673. bind pub o "$::GB::commande(choix)-blacklist" [namespace current]::-blacklist
  2674. bind pub o "$::GB::commande(choix)blacklist" [namespace current]::.blacklist
  2675. bind pub o "$::GB::commande(choix)+exempt" [namespace current]::+exempt
  2676. bind pub o "$::GB::commande(choix)-exempt" [namespace current]::-exempt
  2677. bind pub o "$::GB::commande(choix)exempt" [namespace current]::.exempt
  2678. bind pub - "$::GB::commande(choix)op" [namespace current]::op
  2679. bind pub - "$::GB::commande(choix)deop" [namespace current]::deop
  2680. bind pub - "$::GB::commande(choix)voice" [namespace current]::voice
  2681. bind pub - "$::GB::commande(choix)devoice" [namespace current]::devoice
  2682. bind pub - "$::GB::commande(choix)opall" [namespace current]::opall
  2683. bind pub - "$::GB::commande(choix)deopall" [namespace current]::deopall
  2684. bind pub - "$::GB::commande(choix)voiceall" [namespace current]::voiceall
  2685. bind pub - "$::GB::commande(choix)devoiceall" [namespace current]::devoiceall
  2686. bind pub - "$::GB::commande(choix)ban" [namespace current]::ban
  2687. bind pub - "$::GB::commande(choix)kick" [namespace current]::kick
  2688. bind pub - "$::GB::commande(choix)unban" [namespace current]::unban
  2689. bind pub - "$::GB::commande(choix)kickban" [namespace current]::kickban
  2690. bind pub - "$::GB::commande(choix)clearbans" [namespace current]::clearbans
  2691. bind pub - "$::GB::commande(choix)mode" [namespace current]::mode
  2692. bind pub - "$::GB::commande(choix)topic" [namespace current]::topic
  2693. bind pub - "$::GB::commande(choix)amsg" [namespace current]::amsg
  2694. bind pub o "$::GB::commande(choix)gbon" [namespace current]::gbon
  2695. bind pub o "$::GB::commande(choix)gboff" [namespace current]::gboff
  2696. bind msg - "auth" [namespace current]::auth
  2697. bind msg - "deauth" [namespace current]::deauth
  2698. bind msg - "addsuspend" [namespace current]::addsuspend
  2699. bind msg - "delsuspend" [namespace current]::delsuspend
  2700. bind msg - "addchan" [namespace current]::addchan
  2701. bind msg - "delchan" [namespace current]::delchan
  2702. bind msg - "listchan" [namespace current]::listchan
  2703. bind msg - "access" [namespace current]::access
  2704. bind msg - "newpass" [namespace current]::newpass
  2705. bind msg - "addop" [namespace current]::addop
  2706. bind msg - "addmaster" [namespace current]::addmaster
  2707. bind msg - "addowner" [namespace current]::addowner
  2708. bind msg - "addsuperop" [namespace current]::addsuperop
  2709. bind msg - "delop" [namespace current]::delop
  2710. bind msg - "delmaster" [namespace current]::delmaster
  2711. bind msg - "delowner" [namespace current]::delowner
  2712. bind msg - "delsuperop" [namespace current]::delsuperop
  2713. bind msg - "op" [namespace current]::xop
  2714. bind msg - "deop" [namespace current]::xdeop
  2715. bind msg - "voice" [namespace current]::xvoice
  2716. bind msg - "devoice" [namespace current]::xdevoice
  2717. bind msg - "ban" [namespace current]::xban
  2718. bind msg - "kick" [namespace current]::xkick
  2719. bind msg - "unban" [namespace current]::xunban
  2720. bind msg - "kickban" [namespace current]::xkickban
  2721. bind msg - "clearbans" [namespace current]::xclearbans
  2722. bind msg - "mode" [namespace current]::xmode
  2723. bind msg - "infoline" [namespace current]::infoline
  2724. bind msg - "help" [namespace current]::help
  2725. bind msg - "authlist" [namespace current]::authlist
  2726. bind msg - "topic" [namespace current]::xtopic
  2727. bind msg - "opall" [namespace current]::xopall
  2728. bind msg - "deopall" [namespace current]::xdeopall
  2729. bind msg - "voiceall" [namespace current]::xvoiceall
  2730. bind msg - "devoiceall" [namespace current]::xdevoiceall
  2731. bind msg - "say" [namespace current]::say
  2732. bind msg - "me" [namespace current]::me
  2733. bind msg - "conf" [namespace current]::conf
  2734. bind chon - * [namespace current]::opco
  2735. bind chof - * [namespace current]::opdeco
  2736. bind part o|o "*" [namespace current]::partdeauth
  2737. bind sign o|o "*" [namespace current]::quitdeauth
  2738. bind join - "$::GB::log *" [namespace current]::joindeauth
  2739. bind join - "*" [namespace current]::xbl
  2740. bind notc - * [namespace current]::nonotice_chanoff
  2741. bind join - "*" [namespace current]::greet
  2742. bind evnt -|- prerehash ::GB::uninstall
  2743.  
  2744. putlog "\002$::GB::script_name chargé.\002 alias_angelius 2011©"
  2745. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement