# # # ## ##### # @@@@ @@ # #### # # # # # @ @ @ @ # # # # # # ### ### # ### @@@@ @ @ # # # # # # # # # # # # @ @ @ @ #### #### #### ### # ### ### #### ### @@@@ @ @@ # [LoL's TooLz 8.0] # # Eggdrop TCL Script: [LoL's TooLz] Copyright (C) 1998-2002 LL Productions. # This software is free under the terms of GNU GPL 2. # Type .help lol gpl in party-line for more information. # # HomePage: http://www.leonini.net/ # # ORIGINAL AUTHOR: Lorenzo Leonini alias RB_____ # E-MAIL: lolstoolz@leonini.net ICQ: 22245831 # # NEW MAINTENER : Yoann alias Thor # E-MAIL: yservant@free.fr ICQ: 50383313 # # Thanks for bugs reports (and patches): Hawkeye, PPSlim, Tim Ballantine and many others. # ################################################################################ # # FLAGS USED IN LOL'S TOOLZ: # N Owners | M Masters | B Bots | O Operators | L HALFOP | V Voice | F Friend | - No flags # # MAKE SURE COMMANDS THAT USE THE PRIORITY LEVELS ARE NOT SET SO THAT LOWER USERS ARE ALLOWED # TO PERFORM A NEGATIVE ACTION ON A USER WITH A HIGHER LEVEL. BOTS HAVE THE HIGHEST LEVEL # TO PREVENT BOTWARS (THE BOT ALWAYS RESPECTS THE COMMANDS OF OTHER BOTS). # SETUP # # THIS SCRIPT REQUIRES NOW ALLTOOLS.TCL AND LANG.TCL, PLEASE INSTALL THEM. # THESE ARE THE DEFAULT FLAGS, YOU CAN CHANGE THEM WHEN THE BOT IS ONLINE. # ENABLE (1) OR DISABLE (0) CHANNEL COMMANDS !tcl AND !shell THAT ALLOW # YOU TO USE TCL COMMANDS OR SHELL COMMANDS DIRECTLY IN THE CHAN set lol(tcl) 1 # ENABLE (1) OR DISABLE (0) CHAN-KEY AUTO-UPDATE AND CHAN_KEY MEMORISATION. # WARNING : IF YOU USE GETOPS.TCL YOU NEED TO SET 0 HERE. set lol(chankey) 1 # BAN TYPE : HOW DO YOU WANT TO BAN THE USER ? DEFAULT 1 # 0 - *!*user@*.domain # 1 - *!*@host.domain set lol(bantype) 1 # SET THE CHARACTER THAT WILL BE USED BEFORE PUBLIC QUERRIES # EXAMPLE : if YOU CHOOSE "#", THE COMMANDS IN THE CHAN WILL START BY A "#", #op, #voice .... # DEFAULT CHARACTER IS "!" # IF YOU USE MANY BOTS WITH LoL's TooLz IN THE SAME CHAN, IT CAN BE VERY USEFUL # TO GIVE EACH BOTS A DIFFERENT COMMAND CHARACTER. set lol(cmdchar) "!" # SET TO 1 IF YOU WANT CLONES TO BE IDENTIFIED. # IF SET TO 0, ONLY THE LAST NICK THAT MADE THE IDENT IS IDENTIFIED. # FOR MORE SECURITY, PLACE 0 HERE. set lol(clone) 0 # ADJUST THESE DEFAULT CHAN LINES (USED BY !JOIN, .JOIN...) # NUMBER OF LINES:NUMBER OF SECONDS # EXAMPLE : "3:10" IS 3 LINES IN 10 SECONDS set lol(chan_flood) "8:20" set lol(join_flood) "3:10" set lol(deop_flood) "3:10" set lol(ctcp_flood) "3:10" set lol(kick_flood) "3:10" set lol(chan_parameters) "-clearbans +enforcebans +dynamicbans +userbans -autoop -bitch -greet +protectops -statuslog +stopnethack -revenge +autovoice -secret -shared +cycle -seen" set lol(chanmode) "+nt" # DEFAULT SERVER FLAGS # CHANGE THIS ONLY IF YOU KNOW THE SERVER FLAGS... set lol(server_flags) "+iw-s" # AWAY MESSAGE, IF YOU WANT TO SET AN AWAY MESSAGE FOR THE BOT... set lol(away) "" # SET THE FLAGS FOR USERS THAT YOU DO NOT WANT TO BE KICKED OR BAN IN THE EVENT OF # A !KICK , !QUICK , !BAN . # FOR EXAMPLE IF YOU WANT TO PROTECT +O users : set lol(protect_flags) "o" set lol(protect_flags) "mb" ### BINDS ### # CHANGE THE FLAGS AT YOUR OWN RISK !!! FOR EXAMPLE m|m => o|o # IT CAN CREATE SECURITY HOLES AND SCRIPT PROBLEMS. # YOU CAN DISABLE ANY COMMANDS PLACING "#" BEFORE THEM. bind pub n [string trim $lol(cmdchar)]tcl pub_lol_tcl bind pub n [string trim $lol(cmdchar)]shell pub_lol_shell bind pub n [string trim $lol(cmdchar)]param pub_lol_param bind pub n [string trim $lol(cmdchar)]enable pub_lol_enable bind pub n [string trim $lol(cmdchar)]disable pub_lol_disable bind pub n [string trim $lol(cmdchar)]join pub_lol_join bind pub n +chan pub_lol_join bind pub n [string trim $lol(cmdchar)]remove pub_lol_remove bind pub n -chan pub_lol_remove bind pub m [string trim $lol(cmdchar)]addhost pub_lol_addhost bind pub m +host pub_lol_addhost bind pub m [string trim $lol(cmdchar)]delhost pub_lol_delhost bind pub m -host pub_lol_delhost bind pub m [string trim $lol(cmdchar)]jump pub_lol_jump bind pub m [string trim $lol(cmdchar)]botnick pub_lol_botnick bind pub m [string trim $lol(cmdchar)]uptime pub_lol_uptime bind pub m [string trim $lol(cmdchar)]gchattr pub_lol_gchattr bind pub m|m [string trim $lol(cmdchar)]mass pub_lol_mass bind pub o|o [string trim $lol(cmdchar)]chattr pub_lol_chattr bind pub o|o [string trim $lol(cmdchar)]banperm pub_lol_banperm bind pub o|o [string trim $lol(cmdchar)]banwhois pub_lol_banwhois bind pub o|o +bw pub_lol_banwhois bind pub o|o [string trim $lol(cmdchar)]op pub_lol_op bind pub o|o +o pub_lol_op bind pub o|o [string trim $lol(cmdchar)]deop pub_lol_deop bind pub o|o -o pub_lol_deop bind pub o|o [string trim $lol(cmdchar)]online pub_lol_online bind pub o|o [string trim $lol(cmdchar)]broadcast pub_lol_broadcast bind pub ol|ol [string trim $lol(cmdchar)]mode pub_lol_mode bind pub ol|ol [string trim $lol(cmdchar)]ban pub_lol_ban bind pub ol|ol +b pub_lol_ban bind pub ol|ol [string trim $lol(cmdchar)]hop pub_lol_halfop bind pub ol|ol [string trim $lol(cmdchar)]halfop pub_lol_halfop bind pub ol|ol +ho pub_lol_hop bind pub ol|ol [string trim $lol(cmdchar)]dehop pub_lol_dehalfop bind pub ol|ol [string trim $lol(cmdchar)]dehalfop pub_lol_dehalfop bind pub ol|ol -ho pub_lol_dehalfop bind pub ol|ol [string trim $lol(cmdchar)]banlist pub_lol_banlist bind pub ol|ol [string trim $lol(cmdchar)]topic pub_lol_topic bind pub ol|ol [string trim $lol(cmdchar)]quick pub_lol_quick bind pub ol|ol [string trim $lol(cmdchar)]whoid pub_lol_whoid bind pub ol|ol [string trim $lol(cmdchar)]devoice pub_lol_devoice bind pub ol|ol -v pub_lol_devoice bind pub ol|ol [string trim $lol(cmdchar)]kick pub_lol_kick bind pub ol|ol [string trim $lol(cmdchar)]invite pub_lol_invite bind pub ol|ol [string trim $lol(cmdchar)]stats pub_lol_stats bind pub ol|ol [string trim $lol(cmdchar)]unban pub_lol_unban bind pub ol|ol -b pub_lol_unban bind pub olv|olv [string trim $lol(cmdchar)]voice pub_lol_voice bind pub olv|olv +v pub_lol_voice bind pub - [string trim $lol(cmdchar)]whois pub_lol_whois bind pub - [string trim $lol(cmdchar)]silent pub_lol_silent bind pub - [string trim $lol(cmdchar)]unsilent pub_lol_unsilent bind pub - [string trim $lol(cmdchar)]unident pub_lol_unident bind pub - [string trim $lol(cmdchar)]unpermident pub_lol_unpermident bind pub - [string trim $lol(cmdchar)]uid pub_lol_unident bind pub - [string trim $lol(cmdchar)]upid pub_lol_unpermident bind pub - [string trim $lol(cmdchar)]time pub_lol_time bind pub - [string trim $lol(cmdchar)]help pub_lol_help bind pub - [string trim $lol(cmdchar)]aide pub_lol_help bind pub - [string trim $lol(cmdchar)]troubles pub_lol_troubles bind pub - [string trim $lol(cmdchar)]probleme pub_lol_troubles bind pub n [string trim $lol(cmdchar)]addowner pub_lol_addowner bind pub n +owner pub_lol_addowner bind pub n|n [string trim $lol(cmdchar)]addmaster pub_lol_addmaster bind pub n|n +master pub_lol_addmaster bind pub m|m [string trim $lol(cmdchar)]addop pub_lol_addop bind pub m|m +op pub_lol_addop bind pub m|m [string trim $lol(cmdchar)]addbot pub_lol_addbot bind pub m|m +bot pub_lol_addbot bind pub m|m [string trim $lol(cmdchar)]adduser pub_lol_adduser bind pub m|m +user pub_lol_adduser bind pub o|o [string trim $lol(cmdchar)]addhalfop pub_lol_addhalfop bind pub o|o +hop pub_lol_addhop bind pub o|o [string trim $lol(cmdchar)]addfriend pub_lol_addfriend bind pub o|o +friend pub_lol_addfriend bind pub o|o [string trim $lol(cmdchar)]addvoice pub_lol_addvoice bind pub o|o +voice pub_lol_addvoice bind pub n [string trim $lol(cmdchar)]delowner pub_lol_delowner bind pub n -owner pub_lol_delowner bind pub n [string trim $lol(cmdchar)]deluser pub_lol_deluser bind pub n -user pub_lol_deluser bind pub n|n [string trim $lol(cmdchar)]delmaster pub_lol_delmaster bind pub n|n -master pub_lol_delmaster bind pub m|m [string trim $lol(cmdchar)]delop pub_lol_delop bind pub m|m -op pub_lol_delop bind pub o|o [string trim $lol(cmdchar)]delhalfop pub_lol_delhalfop bind pub o|o -hop pub_lol_delhop bind pub o|o [string trim $lol(cmdchar)]delfriend pub_lol_delfriend bind pub o|o -friend pub_lol_delfriend bind pub o|o [string trim $lol(cmdchar)]delvoice pub_lol_delvoice bind pub o|o -voice pub_lol_delvoice bind msg n addowner msg_lol_addowner bind msg m|m adduser msg_lol_adduser bind msg n|n addmaster msg_lol_addmaster bind msg m|m addop msg_lol_addop bind msg m|m addbot msg_lol_addbot bind msg o|o addhalfop msg_lol_addhalfop bind msg o|o addvoice msg_lol_addvoice bind msg o|o addfriend msg_lol_addfriend bind msg n deluser msg_lol_deluser bind msg n delowner msg_lol_delowner bind msg n|n delmaster msg_lol_delmaster bind msg m|m delop msg_lol_delop bind msg m|m delop msg_lol_delhalfop bind msg o|o delfriend msg_lol_delfriend bind msg o|o delvoice msg_lol_delvoice bind dcc n param dcc_lol_param bind dcc n enable dcc_lol_enable bind dcc n disable dcc_lol_disable bind dcc n join dcc_lol_join bind dcc n remove dcc_lol_remove bind dcc m|m +welcome dcc_lol_+welcome bind dcc m|m -welcome dcc_lol_-welcome bind dcc m|m welcome dcc_lol_welcome bind dcc m notice dcc_lol_notice bind dcc m botnick dcc_lol_botnick bind dcc o chanlist dcc_lol_chanlist bind dcc o getidle dcc_lol_getidle bind dcc o online dcc_lol_online bind dcc o|o onotice dcc_lol_onotice bind dcc o|o userlist dcc_lol_userlist bind dcc o|o chanuser dcc_lol_chanuser bind dcc o|o channel dcc_lol_chanuser bind dcc o|o chanusers dcc_lol_chanuser bind dcc ol|ol mode dcc_lol_mode bind dcc - silent dcc_lol_silent bind dcc - whois dcc_lol_whois bind dcc - unsilent dcc_lol_unsilent bind dcc - unident dcc_lol_unident bind dcc - unpermident dcc_lol_unpermident bind dcc - permident dcc_lol_permident bind dcc - uid dcc_lol_unident bind dcc - upid dcc_lol_unpermident bind dcc - pid dcc_lol_permident bind msg n param msg_lol_param bind msg n enable msg_lol_enable bind msg n disable msg_lol_disable bind msg n join msg_lol_join bind msg n remove msg_lol_remove bind msg m addhost msg_lol_addhost bind msg m delhost msg_lol_delhost bind msg m msg msg_lol_msg bind msg m botnick msg_lol_botnick bind msg m gchattr msg_lol_gchattr bind msg m|m mass msg_lol_mass bind msg o|o chattr msg_lol_chattr bind msg o|o broadcast msg_lol_broadcast bind msg o|o banperm msg_lol_banperm bind msg o|o online msg_lol_online bind msg ol|ol mode msg_lol_mode bind msg ol|ol key msg_lol_key bind msg ol|ol quick msg_lol_quick bind msg ol|ol banlist msg_lol_banlist bind msg ol|ol whoid msg_lol_whoid bind msg ol|ol ban msg_lol_ban bind msg ol|ol unban msg_lol_unban bind msg ol|ol invite msg_lol_invite bind msg ol|ol kick msg_lol_kick bind msg - whois msg_lol_whois bind msg - silent msg_lol_silent bind msg - unsilent msg_lol_unsilent bind msg - ident msg_lol_ident bind msg - permident msg_lol_permident bind msg - unpermident msg_lol_unpermident bind msg - unident msg_lol_unident bind msg - id msg_lol_ident bind msg - auth msg_lol_ident bind msg - login msg_lol_ident bind msg - pid msg_lol_permident bind msg - upid msg_lol_unpermident bind msg - uid msg_lol_unident bind msg - help msg_lol_help bind msg - aide msg_lol_help # END OF SETUP # ################################################################## ## USUALLY YOU DON'T HAVE TO CHANGE ANY OF THE FOLLOWING LINES ## ################################################################## ################# MISC ################# set lol(version) "\002LoL's TooLz 8.0\002" set lang_list "lol.fr lol.en lol.ru" set timerIDwhois 0 set lang_incr 0 foreach lang $lang_list { if {[file exists "/home/mydir/language/$lang.lang"]} { set f [open /home/mydir/language/$lang.lang r] while {[gets $f line] >= 0} { set lol_lang_data($lang_incr[lindex $line 0]) [join [lrange $line 1 end]] } close $f } incr lang_incr } loadhelp lol.dcc.help loadhelp lol.msg.help reloadhelp bind dcc - help dcc_lol_help bind join - * lol_welcome bind mode - * lol_watch_mode unbind dcc - su *dcc:su unbind msg - ident *msg:ident bind dcc n su *dcc:su unbind msg - invite *msg:invite bind mode - "* +k" see_new_pass bind nick - * lol_chidentnick bind sign - * lol_deident bind join - * lol_joinident bind part - * lol_partident bind kick - * lol_kickident bind rejn - * lol_rejnident bind raw * 301 lol_ban_whois_away bind raw * 311 lol_whois_reply bind raw * 311 lol_ban_whois_msg bind raw * 318 lol_whois_unknow bind raw * 319 lol_ban_whois_chan bind raw * 401 lol_whois_nofound set init-server { lol_init } set disconnect-server { lol_init } ################# START OF JOIN PROCEDURES ################# proc lol_welcome {nick host hand chan} { global lol botnick TabWelcome if {![validuser $hand]} { if {[info exists TabWelcome($chan)] && $nick != $botnick } { puthelp "Notice $nick :$TabWelcome($chan)" } } if {[passwdok $hand ""] && ![matchattr $hand b]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 01 ""]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 02 $botnick]" } } ################# END OF JOIN PROCEDURES ################# ################# START OF CHAN COMMANDS ################# ### !TROUBLES or !PROBLEME proc pub_lol_troubles {nick host hand chan arg} { global lol botnick puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 135 [list $lol(version)]]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 136 ""]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 137 $botnick]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 138 ""]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 139 ""]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 140 $botnick]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 141 ""]" if {[validuser $hand] && ![matchattr $hand p]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 142 ""]" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 143 $botnick]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 144 ""]" } if {![lol_check $nick $host $hand]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 145 ""]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 146 $botnick]" } return 0 } ### !HELP proc pub_lol_help {n uh h c a} { msg_lol_help $n $uh $h $a } ### !TCL proc pub_lol_tcl {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand] || !$lol(tcl) } { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]tcl " } { eval $arg } return 0 } ### !SHELL proc pub_lol_shell {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand] || !$lol(tcl) } { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]shell " return 0 } set open 0 if { [llength $arg] == 1 } { if {![catch { exec [lindex $arg 0] }]} { exec [lindex $arg 0] >shell.txt set open 1 } } elseif { [llength $arg] == 2 } { if {![catch { exec [lindex $arg 0] [lindex $arg 1]} ]} { exec [lindex $arg 0] [lindex $arg 1] >shell.txt set open 1 } } else { if {![catch { exec [lindex $arg 0] [lindex $arg 1] [lindex $arg 2]} ]} { exec [lindex $arg 0] [lindex $arg 1] [lindex $arg 2] >shell.txt set open 1 } } if {$open} { set f [open shell.txt r] while {[gets $f line] >= 0} { puthelp "NOTICE $nick :$line" } close $f } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 246 [list $arg]]" } return 0 } ### !SILENT proc pub_lol_silent {nick host hand chan arg} { if {![lol_check $nick $host $hand]} { return 0 } setuser $hand xtra silent 1 puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 76 ""]" } ### !UNSILENT proc pub_lol_unsilent {nick host hand chan arg} { if {![lol_check $nick $host $hand]} { return 0 } setuser $hand xtra silent 0 puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 03 ""]" } ### !UNPERMIDENT proc pub_lol_unpermident {nick host hand chan arg} { if {![lol_check $nick $host $hand]} { return 0 } setuser $hand xtra permident "" if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand +D]} { chattr $hand -3 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 06 ""]" } ### !UNIDENT proc pub_lol_unident {nick host hand chan arg} { if {![lol_check $nick $host $hand]} { return 0 } if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand +D]} { chattr $hand -3 } } ### !BOTNICK proc pub_lol_botnick {mynick host hand chan arg} { global lol nick if {![lol_check $mynick $host $hand]} { return 0 } if {[llength $arg] != 1} { puthelp "NOTICE $mynick :Synthaxe : [string trim $lol(cmdchar)]botnick " } { set nick [charfilter $arg] } return 0 } ### !JUMP [server] [port] proc pub_lol_jump {nick host hand chan arg} { if {![lol_check $nick $host $hand]} { return 0 } set arg [charfilter $arg] set server [lindex $arg 0] set port [lindex $arg 1] if {![isnumber $port]} {set port ""} if {$server == ""} { jump ; return 0 } if {[isnumber $port]} { jump $server $port } { jump $server } return 0 } ### !ADDHOST [host] proc pub_lol_addhost {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]addhost \[host\]" return 0 } set arg [charfilter $arg] set who [lindex $arg 0] set host [lindex $arg 1] if {$host == ""} { set ipmask [lindex [split [maskhost $who![getchanhost $who $chan]] "@"] 1] set userm [lindex [split [getchanhost $who $chan] "@"] 0] set host *!*$userm@$ipmask if {![validuser [nick2hand $who $chan]]} { if {[validuser $who]} { setuser $who hosts $host puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 07 "$host $who"]" return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 12 $who]" return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 18 "$who [nick2hand $who $chan]"]" return 0 } if {![onchan $who $chan]} { if {[validuser $who]} { setuser $who hosts $host puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 07 "$host $who"]" return 0 } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 09 "$who $chan"]" return 0 } } { set whohand [nick2hand $who $chan] if {![validuser $whohand]} { if {![validuser $who]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } { setuser $who hosts $host puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 07 "$host $who"]" return 0 } } { setuser $whohand hosts $host puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 32 "$host $who $whohand"]" return 0 } } return 0 } ### !DELHOST proc pub_lol_delhost {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] != 2} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]delhost " return 0 } set arg [charfilter $arg] set who [lindex $arg 0] set host [lindex $arg 1] if {![onchan $who $chan]} { if {[validuser $who]} { if {[delhost $who $host]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 33 "$host $who"]" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 34 "$host $who"]" } } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 09 "$who $chan"]" } return 0 } if {![validuser [nick2hand $who $chan]]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[delhost [nick2hand $who $chan] $host]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 33 "$host $who"]" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 34 "$host $who"]" } return 0 } ### !CHATTR proc pub_lol_chattr {nick host hand chan arg} { lol_pub_chattr $nick $host $hand $chan $arg "chattr" return 0 } ### !GCHATTR proc pub_lol_gchattr {nick host hand chan arg} { lol_pub_chattr $nick $host $hand $chan $arg "gchattr" return 0 } ### !JOIN [chan pass] proc pub_lol_join {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]join \[chan pass\]" return 0 } set arg [charfilter $arg] set ch [chanaddapt [lindex $arg 0]] set pass [lindex $arg 1] lol_join $nick $host $hand $ch $pass return 0 } ### !WHOID [chan] [flags] proc pub_lol_whoid {nick host hand chan arg} { global lol botnick if {![lol_check $nick $host $hand]} { return 0 } set ch [lindex $arg 0] set whoflags "" if {[llength $arg] > 1} { set whoflags [lindex $arg 1] } lol_whoid $nick $host $hand $ch $whoflags return 0 } ### !REMOVE proc pub_lol_remove {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]remove <#chan>" return 0 } set arg [charfilter $arg] set ch [chanaddapt [lindex $arg 0]] if {![validchan $ch]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 10 $ch]" return 0 } channel remove $ch puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 37 $ch]" } ### !PARAM proc pub_lol_param {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] != 2} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]param " set display "" append display "cmdchar : $lol(cmdchar) " append display "chankey : $lol(chankey) " append display "clone : $lol(clone) " append display "chan_flood : $lol(chan_flood) " append display "join_flood : $lol(join_flood) " append display "deop_flood : $lol(deop_flood) " append display "ctcp_flood : $lol(ctcp_flood) " append display "kick_flood : $lol(kick_flood) " append display "protect_flags : $lol(protect_flags) " append display "server_flags : $lol(server_flags) " puthelp "NOTICE $nick :$display" set display "" append display "chanmode : $lol(chanmode) " append display "chan_parameters: $lol(chan_parameters)" puthelp "NOTICE $nick :$display" puthelp "NOTICE $nick :away : $lol(away)" return 0 } set arg [charfilter $arg] set lol([strlwr [lindex $arg 0]]) [lrange $arg 1 end] puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 38 "[strlwr [lindex $arg 0]] [lrange $arg 1 end]"]" return 0 } ### !ENABLE proc pub_lol_enable {nick host hand chan arg} { global lol botnick if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] != 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]enable " return 0 } set arg [charfilter $arg] set who [lindex $arg 0] set whohand [nick2hand $who $chan] if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } if {[strlwr $who] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 39 ""]" return 0 } if {![validuser $whohand]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[getuser $whohand xtra auth] != "DEAD"} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 40 $who]" return 0 } setuser $whohand xtra auth 0 puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 41 $who]" return 0 } ### !DISABLE proc pub_lol_disable {nick host hand chan arg} { global lol botnick if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] != 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]disable " return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } if {[strlwr $who] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 42 ""]" return 0 } set whohand [nick2hand $who $chan] if {![validuser $whohand]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[getuser $whohand xtra auth] == "DEAD"} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 43 $who]" return 0 } setuser $whohand xtra auth DEAD if {[matchattr $whohand D]} { chattr $whohand -3 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 44 $who]" return 0 } ### !UPTIME proc pub_lol_uptime {nick host hand chan arg} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 244 [list [exec uptime]]]" } ### !ONLINE proc pub_lol_online {nick host hand chan arg} { global server {server-online} uptime version botnick config botname set ip [lindex [split $server ":"] 0] set numchans [llength [channels]] set msg "" append msg "[lang_text lol_lang_data [getlang $hand] 245 [list $botnick $botname [string range $version 0 5] $config]] " append msg "[lang_text lol_lang_data [getlang $hand] 114 [list [time_diff $uptime 1]]]" append msg " [lang_text lol_lang_data [getlang $hand] 113 [list $ip [time_diff ${server-online} 1]]]" if {![matchattr $hand o]} { append msg " [lang_text lol_lang_data [getlang $hand] 112 $numchans]" } { if {$numchans != 0} { append msg " [lang_text lol_lang_data [getlang $hand] 57 [list [channels]]]" } { append msg " [lang_text lol_lang_data [getlang $hand] 56 ""]" } } append msg " [lang_text lol_lang_data [getlang $hand] 111 [llength [bots]]]" puthelp "NOTICE $nick :$msg" } ### !BROADCAST proc pub_lol_broadcast {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]broadcast " return 0 } set arg [charfilter $arg] foreach c [channels] { if {[matchattr $hand o|o $c] && [strlwr $c] != [strlwr $chan]} { puthelp "PRIVMSG $c :\00314\[\003\002$nick\002\00314\]\003 $arg" } } } ### !STATS proc pub_lol_stats {nick host hand chan arg} { global botnick if {![lol_check $nick $host $hand]} { return 0 } set op 0 ; set voice 0 ; set reco 0 ; set normal 0 ; set total 0 foreach vnick [chanlist $chan] { if {[validuser [nick2hand $vnick $chan]]} { incr reco } if {[isop $vnick $chan]} { incr op } if {[isvoice $vnick $chan] && ![isop $vnick $chan]} { incr voice } if {![isvoice $vnick $chan] && ![isop $vnick $chan] && ![validuser [nick2hand $vnick $chan]] && [strlwr $vnick] != [strlwr $botnick]} { incr normal } incr total } set reco_pc [expr (100 / $total) * $reco] set op_pc [expr (100 / $total) * $op] set voice_pc [expr (100 / $total) * $voice] set normal_pc [expr (100 / $total) * $normal] puthelp "NOTICE $nick :$chan STATS !!! \002Oped:\002 $op ($op_pc%) \002Voiced:\002 $voice ($voice_pc%) \002Bot users:\002 $reco ($reco_pc%) \002Other:\002 $normal ($normal_pc%) \002Total:\002 $total" } ### !BANLIST proc pub_lol_banlist {nick host hand chan arg} { if {![lol_check $nick $host $hand]} { return 0 } set num 1 puthelp "NOTICE $nick :$chan BANS info !!! " foreach bans [banlist $chan] { set victim [lindex $bans 0] set why [lindex $bans 1] set expire [lindex $bans 2] set who [lindex $bans 5] set remain [expr $expire - [unixtime]] if {$remain > 0} { set remain "expire in [time_diff $expire 0]." } { set remain "Perm Ban" } puthelp "NOTICE $nick :\002BAN $num:\002 $victim, $remain" puthelp "NOTICE $nick :$who: $why" incr num } if {$num == 1} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 45 $chan]" } return 0 } ### !BANWHOIS [message or #chan] proc pub_lol_banwhois {nick host hand chan arg} { global lol lol_what botnick if {![lol_check $nick $host $hand]} { return 0 } if {[string match #* [lindex $arg 0]] || [llength $arg] < 1} { if {[llength $arg] != 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]banwhois " return 0 } } set lol_what $arg foreach who [chanlist $chan] { if {![validuser [nick2hand $who]] && $who != $botnick } { putserv "whois $who" } } return 0 } ### !BAN [time] [reason] proc pub_lol_ban {nick host hand chan arg} { lol_pub_bad $nick $host $hand $chan $arg ban 0 return 0 } ### !BANPERM [reason] proc pub_lol_banperm {nick host hand chan arg} { lol_pub_bad $nick $host $hand $chan $arg banperm 0 return 0 } ### !KICK [reason] proc pub_lol_kick {nick host hand chan arg} { lol_pub_bad $nick $host $hand $chan $arg kick 0 return 0 } ### !QUICK [reason] proc pub_lol_quick {nick host hand chan arg} { lol_pub_bad $nick $host $hand $chan $arg quick 0 return 0 } ### !UNBAN proc pub_lol_unban {nick host hand chan mask} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $mask] != 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]unban " return 0 } lol_unban $nick $hand $chan $mask 0 return 0 } ### !MODE proc pub_lol_mode {nick host hand chan mode} { global lol if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {![lol_check $nick $host $hand]} { return 0 } if {[llength $mode] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]mode " return 0 } set mode [charfilter $mode] if {$lol(chankey)} { if {[string first k [lindex $mode 0]] != -1} { set posmode [string first k [lindex $mode 0]] if {[string first l [lindex $mode 0]] != -1} { set poslim [string first l [lindex $mode 0]] if {$posmode < $poslim} { channel set $chan need-key "chankey $chan [lindex $mode 1]" } { channel set $chan need-key "chankey $chan [lindex $mode 2]" } } { channel set $chan need-key "chankey $chan [lindex $mode 1]" } } } putserv "MODE $chan $mode" return 0 } set masslist "deop op kick ban voice devoice" ### !mass proc pub_lol_mass {nick host hand chan arg} { global lol masslist if {![botisop $chan] || ![lol_check $nick $host $hand]} { return 0 } set cmd [strlwr [lindex $arg 0]] if {[lsearch -exact $masslist $cmd] == -1} { puthelp "notice $nick :Synthaxe : [string trim $lol(cmdchar)]mass <[join $masslist "|"]>" return 0 } if { $cmd == "ban" } { pub_lol_ban $nick $host $hand $chan "*" return 0 } if { $cmd == "kick" } { pub_lol_kick $nick $host $hand $chan "*" return 0 } lol_mass $chan $cmd return 0 } ### ALL THE ADD PROCS ### proc pub_lol_adduser {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg user return 0 } proc pub_lol_addfriend {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg friend return 0 } proc pub_lol_addvoice {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg voice return 0 } proc pub_lol_addhalfop {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg halfop return 0 } proc pub_lol_addop {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg op return 0 } proc pub_lol_addmaster {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg master return 0 } proc pub_lol_addowner {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg owner return 0 } proc pub_lol_addbot {nick host hand chan arg} { pub_lol_add $nick $host $hand $chan $arg bot return 0 } ### ALL THE DEL PROCS ### proc pub_lol_deluser {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg user return 0 } proc pub_lol_delvoice {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg voice return 0 } proc pub_lol_delfriend {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg friend return 0 } proc pub_lol_delhalfop {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg halfop return 0 } proc pub_lol_delop {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg op return 0 } proc pub_lol_delmaster {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg master return 0 } proc pub_lol_delowner {nick host hand chan arg} { lol_pub_del $nick $host $hand $chan $arg owner return 0 } ### !OP [nick] proc pub_lol_op {nick host hand chan arg} { if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {![lol_check $nick $host $hand]} { return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {$who == "" } { if {![isop $nick $chan]} { putserv "MODE $chan +o $nick" } return 0 } set i 0 ; set loop 0 ; set list "" while { $who != "" } { if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" } elseif {![isop $who $chan]} { lappend list $who ; incr loop } if { $loop == 6 } { putserv "MODE $chan +oooooo $list" ; set list "" ; set loop 0 } incr i set who [lindex $arg $i] } if {$list != ""} { putserv "MODE $chan +ooooo $list" } return 0 } ### !HALFOP [nick] proc pub_lol_halfop {nick host hand chan arg} { if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {![lol_check $nick $host $hand]} { return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {$who == "" } { if {![ishalfop $nick $chan]} { putserv "MODE $chan +h $nick" } return 0 } set i 0 ; set loop 0 ; set list "" while { $who != "" } { if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" } elseif {![ishalfop $who $chan]} { lappend list $who ; incr loop } if { $loop == 6 } { putserv "MODE $chan +hhhhhh $list" ; set list "" ; set loop 0 } incr i set who [lindex $arg $i] } if {$list != ""} { putserv "MODE $chan +hhhhh $list" } return 0 } ### !DEOP [nick] proc pub_lol_deop {nick host hand chan arg} { global botnick if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {$who == ""} { if {[isop $nick $chan]} { putserv "MODE $chan -o $nick" } return 0 } if {![lol_check $nick $host $hand]} { return 0 } set i 0 ; set loop 0 ; set list "" while { $who != "" } { if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" } elseif {[strlwr $who] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 30 ""]" } else { if {[matchattr [nick2hand $who $chan] bm|m $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 49 ""]" } elseif {[isop $who $chan]} { lappend list $who ; incr loop } } if { $loop == 6 } { putserv "MODE $chan -oooooo $list" ; set list "" ; set loop 0 } incr i set who [lindex $arg $i] } if {$list != ""} { putserv "MODE $chan -ooooo $list" } return 0 } ### !DEHALFOP [nick] proc pub_lol_dehalfop {nick host hand chan arg} { global botnick if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {$who == ""} { if {[ishalfop $nick $chan]} { putserv "MODE $chan -h $nick" } return 0 } if {![lol_check $nick $host $hand]} { return 0 } set i 0 ; set loop 0 ; set list "" while { $who != "" } { if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" } elseif {[strlwr $who] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 30 ""]" } else { if {[matchattr [nick2hand $who $chan] bm|m $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 49 ""]" } elseif {[ishalfop $who $chan]} { lappend list $who ; incr loop } } if { $loop == 6 } { putserv "MODE $chan -hhhhhh $list" ; set list "" ; set loop 0 } incr i set who [lindex $arg $i] } if {$list != ""} { putserv "MODE $chan -hhhhh $list" } return 0 } ### !VOICE [nick] proc pub_lol_voice {nick host hand chan arg} { if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {![lol_check $nick $host $hand]} { return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {$who == ""} { if {![isvoice $nick $chan]} { putserv "MODE $chan +v $nick" } return 0 } if {![matchattr $hand o|o $chan]} { return 0 } set i 0 ; set loop 0 ; set list "" while { $who != "" } { if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" } elseif {![isvoice $who $chan]} { lappend list $who ; incr loop } if { $loop == 6 } { putserv "MODE $chan +vvvvvv $list" ; set list "" ; set loop 0 } incr i set who [lindex $arg $i] } if {$list != ""} { putserv "MODE $chan +vvvvv $list" } return 0 } ### !DEVOICE [nick] proc pub_lol_devoice {nick host hand chan arg} { if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {$who == ""} { if {[isvoice $nick $chan]} { putserv "MODE $chan -v $nick" } return 0 } if {![lol_check $nick $host $hand]} { return 0 } set i 0 ; set loop 0 ; set list "" while { $who != "" } { if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" } else { if {[matchattr [nick2hand $who $chan] v|v $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 247 $nick]" } elseif {[isvoice $who $chan]} { lappend list $who ; incr loop } } if { $loop == 6 } { putserv "MODE $chan -vvvvvv $list" ; set list "" ; set loop 0 } incr i set who [lindex $arg $i] } if {$list != ""} { putserv "MODE $chan -vvvvv $list" } return 0 } ### !TOPIC proc pub_lol_topic {nick host hand chan arg} { if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { global lol puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]topic " return 0 } puthelp "TOPIC $chan :$arg" return 0 } ### !INVITE proc pub_lol_invite {nick host hand chan arg} { set arg [charfilter $arg] if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } set who [lindex $arg 0] if {[llength $arg] < 1} { puthelp "NOTICE $nick :Syntaxe : !invite " return 0 } if {[onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } puthelp "INVITE $who $chan" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 147 "$who $chan"]" return 0 } ### !WHOIS proc pub_lol_whois {nick host hand chan arg} { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]whois " return 0 } set arg [charfilter $arg] set who [lindex $arg 0] if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } set whohand [nick2hand $who $chan] set whohost [getchanhost $who $chan] puthelp "NOTICE $nick :[lol_whois $hand $who $whohost $whohand $chan]" return 0 } ### !TIME proc pub_lol_time {nick host hand chan arg} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 51 [list [date] [time]]]" return 0 } ################# END OF CHAN COMMANDS ################# ################# START OF DCC COMMANDS ################# ### .+welcome <#chan> proc dcc_lol_+welcome {hand idx arg} { global TabWelcome if {[llength $arg] < 2} { putdcc $idx "Synthaxe : .+welcome <#chan> " ; return 0 } set chan [strlwr [lindex $arg 0]] if {![validchan $chan] } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } if {![matchattr $hand m|m $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 67 $chan]" return 0 } set TabWelcome($chan) [join [lrange $arg 1 end]] putlog "[lang_text lol_lang_data [getlang $hand] 132 [list $hand $chan $TabWelcome($chan)]]" SaveWelcome return 0 } ### .-welcome <#chan> proc dcc_lol_-welcome {hand idx arg} { global TabWelcome set chan [strlwr [lindex $arg 0]] if {![validchan $chan] } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } if {![matchattr $hand m|m $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 67 $chan]" return 0 } if {![info exists TabWelcome($chan)]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 131 $chan]" return 0 } catch {unset TabWelcome([lindex $arg 0])} SaveWelcome putlog "[lang_text lol_lang_data [getlang $hand] 133 "$chan $hand"]" return 0 } ### .welcome proc dcc_lol_welcome {hand idx arg} { global TabWelcome putlog "#$hand# welcome" putdcc $idx "Synthaxe : .+welcome <#chan> or .-welcome <#chan>" putdcc $idx "" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 134 ""]" foreach a [array name TabWelcome] { putdcc $idx "chan : $a welcome : $TabWelcome($a)" } putdcc $idx "" } # lecture fichier if {[file exists "welcome.txt"]} { set f [open welcome.txt r] while {[gets $f line] >= 0} { set TabWelcome([lindex $line 0]) [join [lrange $line 1 end]] } close $f } # écriture fichier proc SaveWelcome {} { global TabWelcome set f [open welcome.txt w] foreach c [array name TabWelcome] { puts $f "$c $TabWelcome($c)" } close $f } ### .whois proc dcc_lol_whois {hand idx arg} { global lol set arg [charfilter $arg] *dcc:whois $hand $idx $arg set whohand [lindex $arg 0] if {[strlwr $hand] == [strlwr $whohand] || ([validuser $whohand] && [matchattr $hand m|m])} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 108 [list $lol(version)]]" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 109 [list [getuser $whohand xtra auth] [getuser $whohand xtra authnick]]]" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 110 [list [getuser $whohand xtra silent] [getuser $whohand xtra permident] [getuser $whohand xtra lang]]]" } return 0 } ### .unident proc dcc_lol_unident {hand idx arg} { if {[getuser $hand xtra auth] != 1} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 53 ""]" return 0 } if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand +D]} { chattr $hand -3 } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 54 ""]" } ### .permident proc dcc_lol_permident {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] != 1} { putdcc $idx "Synthaxe : .permident " return 0 } set host [lindex $arg 0] setuser $hand xtra permident $host putdcc $idx "[lang_text lol_lang_data [getlang $hand] 55 $host]" } ### .unpermident proc dcc_lol_unpermident {hand idx arg} { setuser $hand xtra permident "" if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand +D]} { chattr $hand -3 } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 06 ""]" } ### .silent proc dcc_lol_silent {hand idx arg} { setuser $hand xtra silent 1 putdcc $idx "[lang_text lol_lang_data [getlang $hand] 76 ""]" } ### .unsilent proc dcc_lol_unsilent {hand idx arg} { setuser $hand xtra silent 0 putdcc $idx "[lang_text lol_lang_data [getlang $hand] 03 ""]" } ### .botnick proc dcc_lol_botnick {hand idx arg} { global nick if {[llength $arg] != 1} { putdcc $idx "Synthaxe : .botnick " return 0 } set nick [charfilter $arg] } ### .param proc dcc_lol_param {hand idx arg} { global lol botnick set arg [charfilter $arg] if {[llength $arg] != 2} { putdcc $idx "Synthaxe : .param " putdcc $idx "cmdchar : $lol(cmdchar)" putdcc $idx "chankey : $lol(chankey)" putdcc $idx "clone : $lol(clone)" putdcc $idx "chan_flood : $lol(chan_flood)" putdcc $idx "join_flood : $lol(join_flood)" putdcc $idx "deop_flood : $lol(deop_flood)" putdcc $idx "ctcp_flood : $lol(ctcp_flood)" putdcc $idx "kick_flood : $lol(kick_flood)" putdcc $idx "chanmode : $lol(chanmode)" putdcc $idx "server_flags : $lol(server_flags)" putdcc $idx "away : $lol(away)" putdcc $idx "protect_flags : $lol(protect_flags)" putdcc $idx "chan_parameters : $lol(chan_parameters)" return 0 } set lol([strlwr [lindex $arg 0]]) [lrange $arg 1 end] putdcc $idx "[lang_text lol_lang_data [getlang $hand] 38 "[strlwr [lindex $arg 0]] [lrange $arg 1 end]"]" return 0 } ### .chanlist proc dcc_lol_chanlist {hand idx arg} { if {[channels] == ""} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 56 ""]" return 0 } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 57 [list [channels]]]" } ### .getidle proc dcc_lol_getidle {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] != 2} { putdcc $idx "Synthaxe : .getidle <#chan>" return 0 } set who [lindex $arg 0] set chan [lindex $arg 1] if {![onchan $who $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } if {![validchan $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 119 "$who [getchanidle $who $chan] $chan"]" return 0 } ### .enable proc dcc_lol_enable {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] != 1} { putdcc $idx "Synthaxe : .enable " return 0 } set who [lindex $arg 0] if {![validuser $who]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[getuser $who xtra auth] != "DEAD"} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 40 $who]" return 0 } setuser $who xtra auth 0 putdcc $idx "[lang_text lol_lang_data [getlang $hand] 41 $who]" return 0 } ### .disable proc dcc_lol_disable {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] != 1} { putdcc $idx "Synthaxe : .disable " return 0 } set who [lindex $arg 0] if {![validuser $who]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[getuser $who xtra auth] == "DEAD"} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 43 $who]" return 0 } setuser $who xtra auth DEAD chattr $who -3 putdcc $idx "[lang_text lol_lang_data [getlang $hand] 44 $who]" return 0 } ### .online proc dcc_lol_online {hand idx arg} { global server {server-online} uptime version botnick config botname set ip [lindex [split $server ":"] 0] set numchans [llength [channels]] putdcc $idx "[lang_text lol_lang_data [getlang $hand] 245 [list $botnick $botname [string range $version 0 5] $config]]" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 114 [list [time_diff $uptime 1]]]" if {$ip != ""} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 113 [list $ip [time_diff ${server-online} 1]]]" } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 112 ""]" } if {![matchattr $hand o]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 112 $numchans]" } { if {$numchans != 0} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 57 [list [channels]]]" } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 56 ""]" } } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 111 [llength [bots]]]" } ### .join [chan pass] proc dcc_lol_join {hand idx arg} { set arg [charfilter $arg] global lol botnick if {[llength $arg] < 1} { putdcc $idx "Synthaxe : .join \[chan pass\]" return 0 } set chan [chanaddapt [lindex $arg 0]] set pass [lindex $arg 1] if {[validchan $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 58 $chan]" if {$pass != ""} { if {$lol(chankey)} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 99 "$chan $pass"]" channel set $chan need-key "chankey $chan $pass" } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 60 $chan]" } } if {![onchan [strlwr $botnick] $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 61 $chan]" putserv "JOIN $chan $pass" } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 59 $chan]" } return 0 } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 62 $chan]" channel add $chan channel set $chan chanmode $lol(chanmode) channel set $chan flood-chan $lol(chan_flood) channel set $chan flood-deop $lol(deop_flood) channel set $chan flood-kick $lol(kick_flood) channel set $chan flood-join $lol(join_flood) channel set $chan flood-ctcp $lol(ctcp_flood) foreach param $lol(chan_parameters) { channel set $chan $param } if {$pass != ""} { if {$lol(chankey)} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 99 "$chan $pass"]" channel set $chan need-key "chankey $chan $pass" } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 60 $chan]" } } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 61 $chan]" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 63 ""]" putserv "JOIN $chan $pass" } ### .notice <#chan or nick> proc dcc_lol_notice {hand idx arg} { if {$arg == ""} { putdcc $idx "Synthaxe : .notice <#chan or nick> ." return 0 } set argument [lindex $arg 0] if {[string first "#" $argument] == 0} { if {![validchan $argument] } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $argument]" return 0 } } set notice [join [lrange $arg 1 end]] puthelp "NOTICE $argument :$notice" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 64 [list $notice $argument]]" return 0 } ### .onotice <#chan> proc dcc_lol_onotice {hand idx arg} { if {$arg == ""} { putdcc $idx "Synthaxe : .onotice <#chan> " return 0 } set chan [lindex $arg 0] if {![validchan $chan] } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } set onotice [join [lrange $arg 1 end]] puthelp "NOTICE @$chan :$onotice" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 65 [list $onotice $chan]]" return 0 } ### .remove proc dcc_lol_remove {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] != 1} { putdcc $idx "Synthaxe : .remove " return 0 } set chan [chanaddapt [lindex $arg 0]] if {![validchan $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 66 $chan]" return 0 } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 37 $chan]" channel remove $chan } ### .userlist [flags] proc dcc_lol_userlist {hand idx arg} { set arg [charfilter $arg] set param [lindex $arg 0] if {[string match #* $param]} { putdcc $idx "Synthaxe : .userlist \[#chan\]" return 0 } set chan [lindex $arg 1] if { $chan == "" } { set list [userlist $param] } else { if {![validchan $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } set list [userlist -|$param $chan] } putdcc $idx "[lang_text lol_lang_data [getlang $hand] 69 [list $list]]" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 70 [llength $list]]" } ### .chanuser proc dcc_lol_chanuser {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] != 1} { putdcc $idx "Synthaxe : .chanuser <#chan>" return 0 } set chan [chanaddapt [lindex $arg 0]] if {[validchan $chan]} { if {![isdynamic $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 72 $chan]" if {![matchattr $hand o|o $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 71 $chan]" return 0 } *dcc:channel $hand $idx $chan return 0 } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 73 $chan]" if {![matchattr $hand o|o $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 70 $chan]" return 0 } *dcc:channel $hand $idx $chan return 0 } } { if {![matchattr $hand o]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 16 ""]" return 0 } putdcc $idx "Joining $chan...\r" channel add $chan utimer 10 "*dcc:channel $hand $idx $chan" utimer 15 "partchan $hand $idx $chan" } return 0 } proc partchan {hand idx chan} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 68 $chan]" channel remove $chan } ### .mode proc dcc_lol_mode {hand idx arg} { set arg [charfilter $arg] if {[llength $arg] < 2} { putdcc $idx "Synthaxe : .mode " return 0 } set chan [chanaddapt [lindex $arg 0]] if {![validchan $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } if {![botisop $chan]} { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {[matchattr $hand ol|ol $chan]} { putserv "MODE $chan [lrange $arg 1 end]" putdcc $idx "[lang_text lol_lang_data [getlang $hand] 74 $chan]" } { putdcc $idx "[lang_text lol_lang_data [getlang $hand] 71 $chan]" } } ### .help proc dcc_lol_help {hand idx arg} { if { [string match "lol dcc *" $arg] || [string match "lol msg *" $arg] || [string match "lol chan *" $arg]} { set arg "$arg[getlang $arg]" } *dcc:help $hand $idx $arg } ################# END OF DCC COMMANDS ################# ################# START OF MSG COMMANDS ################# ### help proc msg_lol_help {nick host hand arg} { global botnick modinfo set arg [charfilter $arg] if { [string match "lol*" $arg]} { *msg:help $nick $host $hand $arg return 0 } if {![validuser $hand] || ![lol_check $nick $host $hand]} { return 0 } if {$arg == "" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 148 $botnick]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 149 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 150 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 151 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 152 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 153 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 154 ""]" return 0 } if {[info exists modinfo(sup.$host)]} { catch {unset modinfo(sup.$host)} if {[!isnumber $arg]} { delhost $hand $arg puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 155 $arg]" return 0 } } if {[info exists modinfo(pass.$host)]} { catch {unset modinfo(pass.$host)} if {[!isnumber $arg]} { if {[strlen $arg] > 5 } { set modinfo(pass.$host) 0 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 156 $arg]" } else { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 157 ""]" } return 0 } } if {[info exists modinfo(ajout.$host)]} { catch {unset modinfo(ajout.$host)} if {![isnumber $arg]} { setuser $hand hosts $arg puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 158 $arg]" return 0 } } if {[info exists modinfo(mail.$host)]} { catch {unset modinfo(mail.$host)} if {![isnumber $arg]} { if { $arg == "none" } { setuser $hand XTRA EMAIL "" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 159 ""]" } else { setuser $hand XTRA EMAIL [string range $arg 0 159] puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 160 $arg]" } return 0 } } if {[info exists modinfo(info.$host)]} { catch {unset modinfo(info.$host)} if {![isnumber $arg]} { if { $arg == "none" } { setuser $hand INFO "" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 161 ""]" } else { setuser $hand INFO "[string range $arg 0 159]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 162 [list $arg]]" } return 0 } } if {[info exists modinfo(hand.$host)]} { catch {unset modinfo(hand.$host)} if {![isnumber $arg]} { chhandle $hand $arg puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 167 $arg]" return 0 } } if {[info exists modinfo(hostperm.$host)]} { catch {unset modinfo(hostperm.$host)} if {![isnumber $arg]} { if { $arg == "none" } { setuser $hand xtra permident 0 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 163 ""]" } else { setuser $hand xtra permident $arg puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 164 $arg]" } return 0 } } if {[info exists modinfo(silent.$host)]} { catch {unset modinfo(silent.$host)} if {![isnumber $arg]} { if { $arg == "silent" } { setuser $hand xtra silent 1 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 165 ""]" } else { setuser $hand xtra silent 0 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 166 ""]" } return 0 } } if {[info exists modinfo(lang.$host)]} { catch {unset modinfo(lang.$host)} if {![isnumber $arg]} { msg_lang $nick $host $hand $arg return 0 } } if {$arg == "1"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 168 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 169 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 170 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 171 ""]" return 0 } if {$arg == "11"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 172 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 173 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 174 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 175 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 176 ""]" return 0 } if {$arg == "111"} { set listhost [getuser $hand HOSTS] puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 177 [list [join $listhost ", "]]]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 178 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 179 ""]" return 0 } if {$arg == "1111" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 180 ""]" set modinfo(sup.$host) 1 return 0 } if {$arg == "1112" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 181 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 182 "$botnick $hand"]" set modinfo(ajout.$host) 1 return 0 } if {$arg == "112" } { set mailperso [getuser $hand XTRA EMAIL] if { $mailperso == "" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 184 ""]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 183 $mailperso]" } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 185 ""]" return 0 } if {$arg == "1121" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 186 ""]" set modinfo(mail.$host) 1 return 0 } if {$arg == "113" } { set infoperso [getuser $hand INFO] if { $infoperso == "" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 187 ""]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 188 [list $infoperso]]" } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 189 ""]" return 0 } if {$arg == "1131" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 190 ""]" set modinfo(info.$host) 1 return 0 } if {$arg == "114" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 191 $hand]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 192 ""]" return 0 } if {$arg == "1141" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 193 ""]" set modinfo(hand.$host) 1 return 0 } if {$arg == "115"} { set langperso [getuser $hand xtra LANG] if { $langperso == "" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 199 ""]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 194 $langperso]" } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 195 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 196 ""]" return 0 } if {$arg == "1151" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 197 ""]" set modinfo(lang.$host) 1 return 0 } if {$arg == "14" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 198 ""]" set modinfo(pass.$host) 1 return 0 } if {$arg == "2"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 226 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 227 ""]" return 0 } if {$arg == "21"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 228 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 229 $botnick]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 230 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 231 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 232 $botnick]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 233 ""]" return 0 } if {$arg == "22"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 234 "$nick!$host"]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 235 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 236 "$host [maskhost $host]"]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 237 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 238 $botnick]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 239 $hand]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 240 $botnick]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 241 $botnick]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 242 ""]" return 0 } if {$arg == "4" } { set globalflags [chattr $hand] puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 200 $globalflags]" foreach chan [channels] { set chanflags [lindex [split [chattr $hand - $chan] |] 1] if { $chanflags != "-" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 201 "$chanflags $chan"]" } } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 202 ""]" return 0 } if {$arg == "41" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 203 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 204 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 205 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 206 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 207 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 208 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 209 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 210 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 211 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 212 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 213 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 214 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 215 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 216 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 217 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 218 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 219 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 220 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 221 $botnick]" return 0 } if {$arg == "13"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 222 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 223 ""]" set modperm($host) 1 return 0 } if {$arg == "12"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 224 ""]" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 225 ""]" set modsilent($host) 1 return 0 } if {$arg == "3"} { *msg:help $nick $host $hand lol } return 0 } ### silent proc msg_lol_silent {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : silent " if {![lol_msg_test $nick $hand "" $arg "!= 1" $usage "" ""]} { return 0 } setuser $hand xtra silent 1 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 76 ""]" } ### unsilent proc msg_lol_unsilent {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : unsilent " if {![lol_msg_test $nick $hand "" $arg "!= 1" $usage "" ""]} { return 0 } setuser $hand xtra silent 0 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 03 ""]" } ### unpermident proc msg_lol_unpermident {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : unpermident " if {![lol_msg_test $nick $hand "" $arg "< 1" $usage "" ""]} { return 0 } setuser $hand xtra permident "" if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand +D]} { chattr $hand -3 } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 06 ""]" } ### unident proc msg_lol_unident {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : unident " if {![lol_msg_test $nick $hand "" $arg "!= 1" $usage "" ""]} { return 0 } if {![lol_check $nick $host $hand msg]} { return 0 } if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand +D]} { chattr $hand -3 } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 54 ""]" } ### botnick proc msg_lol_botnick {mynick host hand arg} { set arg [charfilter $arg] global nick set usage "Synthaxe : botnick " if {![lol_msg_test $mynick $hand "" $arg "!= 2" $usage "" ""]} { return 0 } set nick [lindex $arg 1] } ### addhost proc msg_lol_addhost {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : addhost " if {![lol_msg_test $nick $hand "" $arg "!= 3" $usage "" ""]} { return 0 } set who [lindex $arg 1] set host [lindex $arg 2] if {![validuser $who]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } setuser $who hosts $host puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 07 $host $who]" return 0 } ### delhost proc msg_lol_delhost {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : delhost " if {![lol_msg_test $nick $hand "" $arg "!= 3" $usage "" ""]} { return 0 } set who [lindex $arg 1] set host [lindex $arg 2] if {![validuser $who]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[delhost $who $host]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 33 "$host $who"]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 34 "$host $who"]" } return 0 } ### chattr [chan] proc msg_lol_chattr {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : chattr " set who [lindex $arg 1] set flags [lindex $arg 2] set chan [lindex $arg 3] if {![lol_msg_test $nick $hand "" $arg "< 4" $usage "" ""]} { return 0 } if {![validuser $who]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } lol_chattr $nick $host $hand $chan $who $flags return 0 } ### mass proc msg_lol_mass {nick host hand arg} { global masslist set arg [charfilter $arg] set usage "Synthaxe : mass <[join $masslist "|"]> " set cmd [strlwr [lindex $arg 1]] set chan [lindex $arg 2] if {![lol_msg_test $nick $hand $chan $arg "< 3" $usage m testop]} { return 0 } if {[lsearch -exact $masslist $cmd] == -1} { puthelp "PRIVMSG $nick :$usage" return 0 } if { $cmd == "ban" } { msg_lol_ban $nick $host $hand $chan "[lindex $arg 0] * $chan" return 0 } if { $cmd == "kick" } { msg_lol_kick $nick $host $hand $chan "[lindex $arg 0] * $chan" return 0 } lol_mass $chan $cmd return 0 } ### gchattr proc msg_lol_gchattr {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : gchattr " set who [lindex $arg 1] set flags [lindex $arg 2] if {![lol_msg_test $nick $hand "" $arg "< 2" $usage "" ""]} { return 0 } if {![validuser $who]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } lol_chattr $nick $host $hand "" $who $flags return 0 } ### param proc msg_lol_param {nick host hand arg} { global lol botnick set arg [charfilter $arg] set usage "Synthaxe : param " if {![lol_msg_test $nick $hand "" $arg "< 1" $usage "" ""]} { return 0 } if {[lindex $arg 2] == ""} { puthelp "PRIVMSG $nick :$usage" set display "" append display "cmdchar : $lol(cmdchar) " append display "chankey : $lol(chankey) " append display "clone : $lol(clone) " append display "chan_flood : $lol(chan_flood) " append display "join_flood : $lol(join_flood) " append display "deop_flood : $lol(deop_flood) " append display "ctcp_flood : $lol(ctcp_flood) " append display "kick_flood : $lol(kick_flood) " append display "protect_flags : $lol(protect_flags) " append display "server_flags : $lol(server_flags) " puthelp "PRIVMSG $nick :$display" set display "" append display "chan_parameters : $lol(chan_parameters) " append display "chanmode : $lol(chanmode) " puthelp "PRIVMSG $nick :$display" puthelp "PRIVMSG $nick :away : $lol(away)" return 0 } set lol([strlwr [lindex $arg 1]]) [lrange $arg 2 end] puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 38 "[strlwr [lindex $arg 1]] [lrange $arg 2 end]"]" return 0 } ### enable proc msg_lol_enable {nick host hand arg} { set arg [charfilter $arg] global botnick set usage "Synthaxe : enable " if {![lol_msg_test $nick $hand "" $arg "!= 2" $usage "" ""]} { return 0 } set who [lindex $arg 1] if {![validuser $who]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[getuser $who xtra auth] != "DEAD"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 40 $who]" return 0 } setuser $who xtra auth 0 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 41 $who]" return 0 } ### disable proc msg_lol_disable {nick host hand arg} { global botnick set arg [charfilter $arg] set usage "Synthaxe : disable " if {![lol_msg_test $nick $hand "" $arg "!= 2" $usage "" ""]} { return 0 } set who [lindex $arg 1] if {![validuser $who]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if {[getuser $who xtra auth] == "DEAD"} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 43 $who]" return 0 } setuser $who xtra auth DEAD chattr $who -3 puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 44 $who]" return 0 } ### ident [username] proc msg_lol_ident {nick host hand arg} { global lol botnick set arg [charfilter $arg] set whohand [strlwr [lindex $arg 1]] set pass [lindex $arg 0] set uhost [lindex [split $host "@"] 1] if {![validuser $hand]} { set usage "Synthaxe : ident " if { [llength $arg] != 2 } { puthelp "notice $nick :$usage" } set find 0 foreach user [userlist] { if {[strlwr $user] == $whohand} { set find 1 ; break } } if {!$find} {return 0} if {[passwdok $whohand $pass]} { if {[string match "*.users.undernet.org" [strlwr $host]]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 158 *!*@$uhost]" setuser $whohand HOSTS *!*@$uhost } else { *msg:ident $nick $host $hand $arg } } } { set usage "Synthaxe : ident " if {![lol_msg_test $nick $hand "" $arg "< 1" $usage "" ""]} { return 0 } if {[llength $arg] > 1} { if {$whohand != [strlwr $hand]} { return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 78 ""]" } } if {[getuser $hand xtra auth] == "DEAD"} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 79 ""]" return 0 } if {![onchan $nick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 80 ""]" return 0 } setuser $hand xtra auth 1 setuser $hand xtra authnick $nick setuser $hand xtra authhost $uhost if {![matchattr $hand D]} { chattr $hand +3 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 81 $botnick]" return 0 } ### permident [nick!user@host] proc msg_lol_permident {nick host hand arg} { global botnick set arg [charfilter $arg] set usage "Synthaxe : permident \[nick!user@host\]" set mask [lindex $arg 1] if {![lol_msg_test $nick $hand "" $arg "< 1" $usage "" ""]} { return 0 } if {![onchan $nick] && $mask == ""} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 82 ""]" return 0 } if {$mask == ""} { setuser $hand xtra permident *!$host } { setuser $hand xtra permident $mask } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 55 "[getuser $hand xtra permident]"]" } ### online proc msg_lol_online {nick host hand arg} { global server {server-online} uptime version botnick config botname set ip [lindex [split $server ":"] 0] set numchans [llength [channels]] set msg "" append msg "[lang_text lol_lang_data [getlang $hand] 245 [list $botnick $botname [string range $version 0 5] $config]] " append msg "[lang_text lol_lang_data [getlang $hand] 114 [list [time_diff $uptime 1]]]" append msg " [lang_text lol_lang_data [getlang $hand] 113 [list $ip [time_diff ${server-online} 1]]]" if {![matchattr $hand o]} { append msg " [lang_text lol_lang_data [getlang $hand] 112 $numchans]" } { if {$numchans != 0} { append msg " [lang_text lol_lang_data [getlang $hand] 57 [list [channels]]]" } { append msg " [lang_text lol_lang_data [getlang $hand] 56 ""]" } } append msg " [lang_text lol_lang_data [getlang $hand] 111 [llength [bots]]]" puthelp "PRIVMSG $nick :$msg" } ### broadcast proc msg_lol_broadcast {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : broadcast " set text [lrange $arg 1 end] if {![lol_msg_test $nick $hand "" $arg "!= 2" $usage "" ""]} { return 0 } foreach chan [channels] { if {[matchattr $hand o|o $chan]} { puthelp "PRIVMSG $chan :\002<$nick>:\002 $text" } } } ### key proc msg_lol_key {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : key " set chan [lindex $arg 1] if {![lol_msg_test $nick $hand $chan $arg "!= 2" $usage ol testop]} { return 0 } set mode [getchanmode $chan] if {[string first k [lindex $mode 0]] != -1} { set posmode [string first k [lindex $mode 0]] if {[string first l [lindex $mode 0]] != -1} { set poslim [string first l [lindex $mode 0]] if {$posmode < $poslim} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 85 "[lindex $mode 1] $chan"]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 85 "[lindex $mode 2] $chan"]" } } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 85 "[lindex $mode 1] $chan"]" } return 0 } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 84 $chan]" } ### banlist proc msg_lol_banlist {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : banlist " set chan [lindex $arg 1] if {![lol_msg_test $nick $hand $chan $arg "!= 2" $usage ol testop]} { return 0 } set num 1 puthelp "PRIVMSG $nick :$chan BANS info !!!" foreach bans [banlist $chan] { set victim [lindex $bans 0] set why [lindex $bans 1] set expire [lindex $bans 2] set who [lindex $bans 5] set remain [expr $expire - [unixtime]] if {$remain > 0} { set remain "expire in [time_diff $expire 0]." } { set remain "Perm Ban" } puthelp "PRIVMSG $nick :\002BAN $num:\002 $victim, $remain" puthelp "PRIVMSG $nick :$who: $why" incr num } if {$num == 1} {puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 45 $chan]"} return 0 } ## kick [reason] proc msg_lol_kick {nick host hand arg} { lol_msg_bad $nick $host $hand $arg kick 0 return 0 } ### quick [reason] proc msg_lol_quick {nick host hand arg} { lol_msg_bad $nick $host $hand $arg quick 0 return 0 } ### ban [time] [reason] proc msg_lol_ban {nick host hand arg} { lol_msg_bad $nick $host $hand $arg ban 0 return 0 } ### banperm [reason] proc msg_lol_banperm {nick host hand arg} { lol_msg_bad $nick $host $hand $arg banperm 0 return 0 } ### whoid [chan] [flags] proc msg_lol_whoid {nick host hand arg} { set usage "Synthaxe : whoid \[chan\] \[flags\]" if {![lol_msg_test $nick $hand "" $arg "< 1" $usage "" ""]} { return 0 } set chan "" set whoflags "" if {[llength $arg] > 2} { if {[string match #* [lindex $arg 1]]} { set chan [lindex $arg 1] if {![validchan $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } set whoflags [lindex $arg 2] if {$whoflags == "" } { puthelp "PRIVMSG $nick :Synthaxe : whoid password " return 0 } } { set whoflags [lindex $arg 1] } } lol_whoid $nick $host $hand $chan $whoflags return 0 } ### unban proc msg_lol_unban {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : unban " set mask [lindex $arg 1] set chan [lindex $arg 2] if {![lol_msg_test $nick $hand $chan $arg "!= 3" $usage ol testop]} { return 0 } lol_unban $nick $hand $chan $mask 0 return 0 } ### mode proc msg_lol_mode {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : mode " global lol set chan [lindex $arg 1] if {![lol_msg_test $nick $hand $chan $arg "< 3" $usage ol testop]} { return 0 } set mode [lrange $arg 2 end] if {$lol(chankey)} { if {[string first k [lindex $mode 0]] != -1} { set posmode [string first k [lindex $mode 0]] if {[string first l [lindex $mode 0]] != -1} { set poslim [string first l [lindex $mode 0]] if {$posmode < $poslim} { channel set $chan need-key "chankey $chan [lindex $mode 1]" } { channel set $chan need-key "chankey $chan [lindex $mode 2]" } } { channel set $chan need-key "chankey $chan [lindex $mode 1]" } } } putserv "MODE $chan $mode" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 86 $chan]" return 0 } ### whois proc msg_lol_whois {nick host hand arg} { if {![validuser $hand]} { return 0 } set arg [charfilter $arg] set usage "Synthaxe : whois \[chan\]" global lol_whois if {![lol_msg_test $nick $hand "" $arg "< 2" $usage "" ""]} { return 0 } set who [lindex $arg 1] set chan [lindex $arg 2] if { $chan != "" && ![validchan $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } set find 0 foreach chan [channels] { foreach user [chanlist $chan] { if {[strlwr $user] == [strlwr $who]} { set find $chan ; break } } } if {$find != 0} { puthelp "PRIVMSG $nick :[lol_whois $hand $who [getchanhost $who $find] [nick2hand $who $find] $chan]" return 0 } if {$lol_whois != ""} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 87 ""]" return 0 } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 88 $who]" putserv "whois $who" set lol_whois $nick:$who } ### all the add procs ### proc msg_lol_adduser {nick host hand arg} { msg_lol_add $nick $hand $arg user return 0 } proc msg_lol_addvoice {nick host hand arg} { msg_lol_add $nick $hand $arg voice return 0 } proc msg_lol_addfriend {nick host hand arg} { msg_lol_add $nick $hand $arg friend return 0 } proc msg_lol_addbot {nick hand host arg} { msg_lol_add $nick $hand $arg bot return 0 } proc msg_lol_addhalfop {nick host hand arg} { msg_lol_add $nick $hand $arg halfop return 0 } proc msg_lol_addop {nick host hand arg} { msg_lol_add $nick $hand $arg op return 0 } proc msg_lol_addmaster {nick host hand arg} { msg_lol_add $nick $hand $arg master return 0 } proc msg_lol_addowner {nick host hand arg} { msg_lol_add $nick $hand $arg owner return 0 } ### all the del procs ### proc msg_lol_deluser {nick host hand arg} { lol_msg_del $nick $host $hand $arg user return 0 } proc msg_lol_delvoice {nick host hand arg} { lol_msg_del $nick $host $hand $arg voice return 0 } proc msg_lol_delfriend {nick host hand arg} { lol_msg_del $nick $host $hand $arg friend return 0 } proc msg_lol_delhalfop {nick host hand arg} { lol_msg_del $nick $host $hand $arg halfop return 0 } proc msg_lol_delop {nick host hand arg} { lol_msg_del $nick $host $hand $arg op return 0 } proc msg_lol_delmaster {nick host hand arg} { lol_msg_del $nick $host $hand $arg master return 0 } proc msg_lol_delowner {nick host hand arg} { lol_msg_del $nick $host $hand $arg owner return 0 } ### invite [chan] proc msg_lol_invite {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : invite \[chan\] \[nick\]" set chan [strlwr [lindex $arg 1]] set who [lindex $arg 2] if {![lol_msg_test $nick $hand "" $arg "< 1" $usage "" ""]} { return 0 } if {$chan != ""} { set chan [chanaddapt $chan] if {![validchan $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } if {[onchan $nick $chan] && $who == "" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 92 $chan]" return 0 } if {[onchan $who $chan] && $who != "" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 93 "$who $chan"]" return 0 } if {[string first i [lindex [getchanmode $chan] 0]] == -1} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 94 $chan]" return 0 } if {![matchattr $hand ol|ol $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 71 $chan]" return 0 } if { $who != "" } { puthelp "INVITE $who $chan" puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 147 "$who $chan"]" } else { puthelp "INVITE $nick $chan" } return 0 } set invitelist "" foreach chan [channels] { if {[string first i [lindex [getchanmode $chan] 0]] != -1} { if {![onchan $nick $chan]} { if {[matchattr $hand ol|ol $chan]} { lappend invitelist $chan } } } } if {$invitelist == ""} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 95 ""]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 96 "[join $invitelist ", "]"]" } return 0 } ### join [chan pass] proc msg_lol_join {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : join \[chan pass\]" global botnick set chan [lindex $arg 1] if {![lol_msg_test $nick $hand "" $arg "< 2" $usage "" ""]} { return 0 } set pass [lindex $arg 2] lol_join $nick $host $hand $chan $pass return 0 } ### remove proc msg_lol_remove {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : remove " set chan [chanaddapt [lindex $arg 1]] if {![lol_msg_test $nick $hand $chan $arg "!= 2" $usage "" ""]} { return 0 } channel remove $chan puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 37 $chan]" } ### msg proc msg_lol_msg {nick host hand arg} { set arg [charfilter $arg] set usage "Synthaxe : msg " set chan [lindex $arg 1] if {![lol_msg_test $nick $hand $chan $arg "< 3" $usage "" ""]} { return 0 } puthelp "PRIVMSG $chan :[lrange $arg 2 end]" } ################# END OF MSG COMMANDS ################# ################# START OF MISC ################# proc lol_init {} { global lol botnick lol_whois lol_what puthelp "MODE $botnick $lol(server_flags)" lol_alldeident if {$lol(away) != ""} { utimer 20 { puthelp "AWAY :$lol(away)" } } set lol_whois "" set lol_what "" } proc lol_whois {hand who whohost whohand chan} { if {![validuser $whohand]} {return "[lang_text lol_lang_data [getlang $hand] 12 $who]"} if {$whohand != ""} { set msg "[lang_text lol_lang_data [getlang $hand] 116 "$who $whohand"] " set globalflags [lindex [split [chattr $whohand - ] |] 0] if {$globalflags == ""} { set globalflags [lang_text lol_lang_data [getlang $hand] 98 ""] } append msg "[lang_text lol_lang_data [getlang $hand] 120 $globalflags] " if {$chan != ""} { set chanflags [lindex [split [chattr $whohand - $chan] |] 1] if {$chanflags == "-"} { set chanflags [lang_text lol_lang_data [getlang $hand] 98 ""]} append msg "[lang_text lol_lang_data [getlang $hand] 118 [list $chan $chanflags]] " } { foreach chan [channels] { set chanflags [lindex [split [chattr $whohand - $chan] |] 1] if { $chanflags != "-" } { append msg "[lang_text lol_lang_data [getlang $hand] 118 [list $chan $chanflags]] " } } } if {[getuser $whohand xtra auth] == 1} { append msg "[lang_text lol_lang_data [getlang $hand] 121 ""] " } { append msg "[lang_text lol_lang_data [getlang $hand] 122 ""] " } if {[getuser $whohand xtra permident] != ""} { append msg "[lang_text lol_lang_data [getlang $hand] 123 [getuser $whohand xtra permident]] " } { append msg "[lang_text lol_lang_data [getlang $hand] 124 ""] " } if {[getuser $whohand xtra silent] == 1} { append msg "[lang_text lol_lang_data [getlang $hand] 125 ""] " } { append msg "[lang_text lol_lang_data [getlang $hand] 126 ""] " } if {$chan != ""} { if {[getchaninfo $whohand $chan] != ""} { append msg "[lang_text lol_lang_data [getlang $hand] 127 [list $chan [getchaninfo $whohand $chan]]] " } { append msg "[lang_text lol_lang_data [getlang $hand] 128 $chan] " } } return $msg } { return "[lang_text lol_lang_data [getlang $hand] 129 $who] " } } proc lol_ban_whois_chan { from signal arg } { global lol_what timerIDwhois if {![string match *#* $lol_what]} { return 0 } catch { killutimer $timerIDwhois } set timerIDwhois [utimer 5 {set lol_what ""}] set arg [charfilter $arg] set nick [lindex $arg 1] if { $lol_what == "" || [validuser [nick2hand $nick]]} { return 0} set msg [join [lrange $arg 2 end]] if {[string match *$lol_what* $msg] || [string match $lol_what $msg]} { lol_do_badwhois $nick $lol_what } return 0 } proc lol_ban_whois_msg {from signal arg} { global lol_what timerIDwhois if {[string match *#* $lol_what]} { return 0 } catch { killutimer $timerIDwhois } set timerIDwhois [utimer 5 {set lol_what ""}] set arg [charfilter $arg] set nick [lindex $arg 1] if { $lol_what == "" || [validuser [nick2hand $nick]]} { return 0} set msg [join [lrange $arg 5 end]] if {[string match *$lol_what* $msg] || [string match $lol_what $msg]} { lol_do_badwhois $nick $lol_what } return 0 } proc lol_ban_whois_away {from signal arg} { global lol_what timerIDwhois if {[string match *#* $lol_what]} { return 0 } set arg [charfilter $arg] catch { killutimer $timerIDwhois } set timerIDwhois [utimer 3 {set lol_what ""}] set nick [lindex $arg 1] set msg [join [lrange $arg 2 end]] if { $lol_what == "" || [validuser [nick2hand $nick]]} { return 0} if {[string match *$lol_what* $msg] || [string match $lol_what $msg]} { lol_do_badwhois $nick $lol_what } return 0 } proc lol_do_badwhois { nick what } { set host [getchanhost $nick] set ban "*!*[string range $host [string first @ $host] e]" set why "Your whois is corresponding to $what" newban $ban Banwhois $why 60 return 0 } proc lol_whois_reply {from signal arg} { global lol_whois set arg [charfilter $arg] set nick [lindex $arg 1] set user [lindex $arg 2] set ip [lindex $arg 3] set c [lindex [split $lol_whois ":"] 0] if {[strlwr $nick] != [strlwr [lindex [split $lol_whois ":"] 1]]} { return 0 } set who $nick!$user@$ip set whohand [finduser $who] if {[validuser $whohand]} { puthelp "PRIVMSG $c :[lol_whois [nick2hand $c] $nick $user@$ip $whohand ""]" } { puthelp "PRIVMSG $c :[lang_text lol_lang_data [getlang ""] 12 $who]" } set lol_whois "" return 0 } proc lol_whois_unknow {from signal arg} { global lol_whois set arg [charfilter $arg] set nick [lindex $arg 1] set c [lindex [split $lol_whois ":"] 0] set nick2 [lindex [split $lol_whois ":"] 1] if {$lol_whois != "" && [strlwr $nick] == [strlwr $nick2]} { puthelp "PRIVMSG $c :[lang_text lol_lang_data [getlang ""] 117 $nick]" set lol_whois "" } return 0 } proc lol_whois_nofound {from signal arg} { global lol_whois if {![info exists lol_whois]} {return 0} set arg [charfilter $arg] set nick [lindex $arg 1] set c [lindex [split $lol_whois ":"] 0] set nick2 [lindex [split $lol_whois ":"] 1] if {$lol_whois != "" && [strlwr $nick] == [strlwr $nick2]} { puthelp "PRIVMSG $c :[lang_text lol_lang_data [getlang ""] 130 $nick]" set lol_whois "" } return 0 } proc lol_watch_mode {nick host hand chan mode who} { global lol botnick botname if {$mode != "+b" || ![botisop $chan]} {return 0} if {[llength [chanbans $chan]] > 27 } { set banhost "" set b_count 0 for {set loop 0} {$loop < 6} {incr loop} { set banhost "$banhost [lindex [lindex [chanbans $chan] $loop] 0]" incr b_count if {$loop == 5 } { putserv "MODE $chan -bbbbbb $banhost" set banhost "" ; set b_count 0 } } } if {[string match [strlwr $who] [strlwr $botname]]} { putserv "MODE $chan -b $who" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 97 ""]" return 0 } foreach user [chanlist $chan] { set userhand [nick2hand $user $chan] if {[validuser $userhand] && $hand != $userhand } { if {[string match [strlwr $who] [strlwr "$user![getchanhost $user $chan]"]]} { if {[matchattr $userhand ov|ov $chan]} { if {[lol_ban_test $nick $hand $who $chan $userhand]} { return 0 } } } } } foreach user [userlist] { if {$user != $hand} { foreach userhost [getuser $user HOSTS] { if {[string match [strlwr $who] [strlwr $userhost]] && [matchattr $user ov|ov $chan]} { if {[lol_ban_test $nick $hand $who $chan $user]} { return 0 } } } } } return 0 } proc lol_ban_test {nick hand ban chan victim} { global botnick set remove 0 if {![validuser $hand] && [channel get $chan userbans]} { set remove 1 } if {[matchattr $victim mb|m $chan] && ![matchattr $hand m|m $chan]} { set remove 1 } if {[matchattr $victim o|o $chan] && ![matchattr $hand o|o $chan]} { set remove 1 } if {$remove} { putserv "MODE $chan -b $ban" if {$nick != $botnick} { putserv "MODE $chan -o $nick" } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang ""] 100 "$chan $ban $victim"]" return 1 } return 0 } proc lol_check {nick host hand} { global lol botnick if {[getuser $hand xtra auth] != "DEAD" && ([getuser $hand xtra permident] != "")} { if {[string match [strlwr [getuser $hand xtra permident]] [strlwr $nick!$host]]} { return 1 } } if {[getuser $hand xtra auth] == 1} { if {$lol(clone)} { set host [lindex [split $host "@"] 1] if {[getuser $hand xtra authhost] == $host} { return 1 } } if {[getuser $hand xtra authnick] == $nick} { return 1 } } if {[getuser $hand xtra silent] == 1 } { return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 00 $botnick]" return 0 } proc lol_chidentnick {nick host hand chan newnick} { global botnick if {![validuser $hand]} {return 0} if {[getuser $hand xtra auth] == 1} { if {[getuser $hand xtra authnick] == $nick} { setuser $hand xtra authnick $newnick } } } proc lol_kickident {nick host hand chan kick arg} { global botnick if {$kick == $botnick} { regsub -all -- $chan [channels] "" chanstemp foreach user [chanlist $chan] { set userhand [nick2hand $user $chan] if {[validuser $userhand]} { set find 0 foreach ch $chanstemp { if {[onchan $user $ch]} { incr find } } if {!$find } { if {[getuser $userhand xtra auth] != "DEAD"} { setuser $userhand xtra auth 0 } if {[matchattr $userhand D]} { chattr $userhand -3 } } } } } return 0 } proc lol_partident {nick host hand chan reason} { if {![validuser $hand]} {return 0} set find 0 regsub -all -- $chan [channels] "" chanstemp foreach ch $chanstemp { if {[onchan $nick $ch]} { set find 1 } } if {!$find} { if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand D]} { chattr $hand -3 } } } proc lol_rejnident {nick host hand chan} { if {![validuser $hand]} {return 0} set find 0 regsub -all -- $chan [channels] "" chanstemp foreach ch $chanstemp { if {[onchan $nick $ch]} { incr find } } if {!$find} { if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand D]} { chattr $hand -3 } } } proc lol_joinident {nick host hand chan} { if {![validuser $hand]} {return 0} set find 0 regsub -all -- $chan [channels] "" chanstemp foreach ch $chanstemp { if {[onchan $nick $ch]} { incr find } } if {!$find} { if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand D]} { chattr $hand -3 } } } proc lol_alldeident {} { foreach user [userlist] { if {[getuser $user xtra auth] != "DEAD"} { setuser $user xtra auth 0 } if {[matchattr $hand D]} { chattr $user -3 } } } proc lol_deident {nick host hand chan reason} { if {![validuser $hand]} {return 0} if {[getuser $hand xtra auth] != "DEAD"} { setuser $hand xtra auth 0 } if {[matchattr $hand D]} { chattr $hand -3 } } proc chankey {chan pass} { putserv "JOIN $chan $pass" } proc chanaddapt {chan} { if {[string index $chan 0] != "#" && [string index $chan 0] != "&"} { set chan #$chan } return $chan } proc see_new_pass {a b c d e f} { global lol if {$lol(chankey)} {return 0} set k [lindex $e 0] set pass [lindex $f 0] channel set $d need-key "chankey $d $pass" } proc time_diff { time inverse} { if {$inverse} { set ltime [expr [unixtime] - $time] } { set ltime [expr $time - [unixtime]] } set seconds [expr $ltime % 60] set ltime [expr ($ltime - $seconds) / 60] set minutes [expr $ltime % 60] set ltime [expr ($ltime - $minutes) / 60] set hours [expr $ltime % 24] set days [expr ($ltime - $hours) / 24] set result "" if {$days} { append result "$days " if {$days == 1} { append result "day " } { append result "days " } } if {$hours} { append result "$hours " if {$hours == 1} { append result "hour " } { append result "hours " } } if {$minutes} { append result "$minutes " if {$minutes == 1} { append result "minute " } { append result "minutes " } } if {$seconds} { append result "$seconds " if {$seconds == 1} { append result "second" } { append result "seconds" } } return $result } proc charfilter {x {y ""} } { for {set i 0} {$i < [string length $x]} {incr i} { switch -- [string index $x $i] { "\"" {append y "\\\""} "\\" {append y "\\\\"} "\[" {append y "\\\["} "\]" {append y "\\\]"} "\} " {append y "\\\} "} "\{" {append y "\\\{"} default {append y [string index $x $i]} } } return $y } proc lol_test_rights { command witch } { switch -exact -- $command { "owner" { set param "n" ; set needflag "n|-" } "master" { set param "m" ; set needflag "n|n" } "op" { set param "o" ; set needflag "m|m" ; } "halfop" { set param "l" ; set needflag "o|o" ; } "friend" { set param "f" ; set needflag "o|o" } "voice" { set param "v" ; set needflag "o|o" } "bot" { set param "-" ; set needflag "m|m" } default { set param "-" ; set needflag "n|-" } } if { $witch == "flag" } { return $needflag } { return $param } } proc lol_pub_chattr { nick host hand chan arg command } { global lol if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] != 2} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]chattr " return 0 } set arg [charfilter $arg] set who [lindex $arg 0] set flags [lindex $arg 1] if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } set whohand [nick2hand $who $chan] if {![validuser $whohand]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } if { $command == "chattr" } { lol_chattr $nick $host $hand $chan $whohand $flags } { lol_chattr $nick $host $hand "" $whohand $flags } return 0 } proc lol_chattr { nick host hand chan who flags } { if {$chan != ""} { if {[lol_do_chattr $nick $hand $chan $who $flags n|n]} { return 0 } regsub -all -- "n" $flags "" flags regsub -all -- "m" $flags "" flags if {[lol_do_chattr $nick $hand $chan $who $flags m|m]} { return 0 } regsub -all -- "o" $flags "" flags regsub -all -- "l" $flags "" flags if {[lol_do_chattr $nick $hand $chan $who $flags o|o]} { return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 16 ""]" } { if {[lol_do_chattr $nick $hand $chan $who $flags n]} { return 0 } regsub -all -- "n" $flags "" flags regsub -all -- "m" $flags "" flags if {[lol_do_chattr $nick $hand $chan $who $flags m]} { return 0 } regsub -all -- "o" $flags "" flags regsub -all -- "l" $flags "" flags if {[lol_do_chattr $nick $hand $chan $who $flags o]} { return 0 } puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 16 ""]" } return 0 } proc lol_do_chattr { nick hand chan who flags needflags } { if { $chan == ""} { if {[matchattr $hand $needflags]} { set change [chattr $who $flags] if {$change != ""} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 77 "$who $change"]" } { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 35 $who]" } return 1 } } else { if {[matchattr $hand $needflags $chan]} { set change [chattr $who -|$flags $chan] if {$change != ""} { set change [lindex [split $change "|"] 1] puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 36 "$who $chan $change"]" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 35 $who]" } return 1 } } return 0 } proc lol_pub_del { nick host hand chan arg command } { global lol set arg [charfilter $arg] if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] != 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]del$command " return 0 } set who [lindex $arg 0] lol_del $nick $host $hand $chan $who $command } proc lol_msg_del { nick host hand arg command } { set arg [charfilter $arg] set who [lindex $arg 1] set chan [lindex $arg 2] set usage "Synthaxe : del$command " if {$command != "user" && ![lol_msg_test $nick $hand $chan $arg "< 3" $usage "" ""]} { return 0 } set usage "Synthaxe : del$command " if {$command == "user" && ![lol_msg_test $nick $hand $chan $arg "< 2" $usage "" ""] } { return 0 } lol_del $nick $host $hand $chan $who $command } proc lol_del { nick host hand chan who command } { global botnick if {[onchan $who]} { set whohand [nick2hand $who] } { if {![validuser $who]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 12 $who]" return 0 } { set whohand $who } } if {[strlwr $nick] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 30 ""]" return 0 } if {[getting-users]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 17 ""]" return 0 } set param [lol_test_rights $command parameter] if {![matchattr $hand [lol_test_rights $command flag] $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 16 ""]" return 0 } if {$command == "user" } { if {[matchattr $whohand n]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 89 ""]" return 0 } deluser $whohand boot $whohand "[lang_text lol_lang_data [getlang ""] 90 ""]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 101 "$who ${command}list"]" puthelp "NOTICE $who :[lang_text lol_lang_data [getlang ""] 102 "${command}list $nick"]" return 0 } if {![matchattr $whohand -|+$param $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 103 "$who $command $chan"]" } { chattr $whohand -|-$param $chan puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 104 "$who $chan ${command}list"]" puthelp "NOTICE $who :[lang_text lol_lang_data [getlang $whohand] 105 "$chan ${command}list $nick"]" } return 0 } proc lol_join {nick host hand chan pass } { global botnick lol if {[validchan $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 58 $chan]" if {$pass != ""} { if {$lol(chankey)} { puthelp "NOTICE $nick :New pass set for $chan: $pass." channel set $chan need-key "chankey $chan $pass" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 60 ""]" } } if {![onchan [strlwr $botnick] $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 61 $chan]" putserv "JOIN $chan $pass" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 59 $chan]" } return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 62 $chan]" channel add $chan channel set $chan chanmode $lol(chanmode) channel set $chan flood-chan $lol(chan_flood) channel set $chan flood-deop $lol(deop_flood) channel set $chan flood-kick $lol(kick_flood) channel set $chan flood-join $lol(join_flood) channel set $chan flood-ctcp $lol(ctcp_flood) foreach param $lol(chan_parameters) { channel set $chan $param } if {$pass != ""} { if {$lol(chankey)} { puthelp "NOTICE $nick :New pass set for $chan : $pass. " channel set $chan need-key "chankey $chan $pass" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 60 ""]" } } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 61 $chan]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 63 ""]" putserv "JOIN $chan $pass" } proc lol_msg_test { nick hand chan arg test usage flag testop } { global botnick if {![validuser $hand]} { return 0 } if {[expr [llength $arg] $test]} { puthelp "PRIVMSG $nick :$usage" return 0 } if {![passwdok $hand [lindex $arg 0]]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 13 ""]" return 0 } if {[passwdok $hand ""]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 14 $botnick]" return 0 } if { $chan != ""} { set chan [chanaddapt $chan] if {![validchan $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 10 $chan]" return 0 } } if {$testop != "" && ![botisop $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if { $flag != "" && ![matchattr $hand $flag|$flag $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 71 $chan]" return 0 } return 1 } proc lol_unban { nick hand chan mask byX } { global ChanAccess if {[isnumber $mask]} { set find 0 foreach bans [banlist $chan] { incr find if {$find == $mask} { set mask [lindex $bans 0] ; break } } if {[isnumber $mask]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 46 $mask]" return 0 } } else { if {[string first "!" $mask] == -1 && [string first "@" $mask] == -1} { if {[isnumber [string index $mask 0]]} { set mask *!*@$mask } else { set mask $mask*!*@* } } if {[string first "!" $mask] == -1} {set mask *!*$mask} if {[string first "@" $mask] == -1} {set mask $mask*@*} } if {[info exists ChanAccess($chan)] && $byX } { if {$ChanAccess($chan)} { putserv "PRIVMSG X :unban $chan $mask" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 47 "$mask $chan"]" return 0 } } if {[isban $mask $chan]} { if {![killchanban $chan $mask]} { killban $mask } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 47 "$mask $chan"]" return 0 } if {[ischanban $mask $chan] && [botisop $chan]} { putserv "MODE $chan -b $mask" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 47 "$mask $chan"]" return 0 } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 48 $chan]" return 0 } proc lol_mass { chan cmd } { global botnick set liste "" foreach user [chanlist $chan] { if { $user != $botnick } { set whohand [nick2hand $user $chan] if { $cmd == "op" && ![isop $user $chan]} { lappend liste $user if {[llength $liste] == 6} { putserv "MODE $chan +oooooo $liste" set liste "" } } if { $cmd == "deop" && [isop $user $chan] && ![matchattr $whohand o|o $chan]} { lappend liste $user if {[llength $liste] == 6} { putserv "MODE $chan -oooooo $liste" set liste "" } } if { $cmd == "voice" && ![isvoice $user $chan]} { lappend liste $user if {[llength $liste] == 6} { putserv "MODE $chan +vvvvvv $liste" set liste "" } } if { $cmd == "devoice" && [isvoice $user $chan] && ![matchattr $whohand v|v $chan]} { lappend liste $user if {[llength $liste] == 6} { putserv "MODE $chan -vvvvvv $liste" set liste "" } } } } if { $liste != ""} { if { $cmd == "op" } { putserv "MODE $chan +ooooo $liste" } if { $cmd == "deop" } { putserv "MODE $chan -ooooo $liste" } if { $cmd == "voice" } { putserv "MODE $chan +vvvvv $liste" } if { $cmd == "devoice" } { putserv "MODE $chan -vvvvv $liste" } } return 0 } proc lol_msg_bad { nick host hand arg command byX } { global botnick set arg [charfilter $arg] set who [lindex $arg 1] set chan [lindex $arg 2] if { $command == "ban" } { set usage "Synthaxe : $command \[time\] \[reason\]" } else { set usage "Synthaxe : $command \[reason\]" } if {![lol_msg_test $nick $hand $chan $arg "< 3" $usage ol testop]} { return 0 } set ti [lindex $arg 3] if {[isnumber $ti]} { set reason [lrange $arg 4 end] } { if { $command == "banperm" } { set ti 0 } else { set ti "" } set reason [lrange $arg 3 end] } lol_do_bad $nick $hand $chan $who $ti $reason $command $byX } proc lol_whoid { nick host hand whochan whoflags } { if {$whochan != "" && ![matchattr $hand o|o $whochan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 71 $whochan]" return 0 } set identlist "" foreach user [userlist] { if {[getuser $user xtra auth] == 1} { if {[matchattr $user $whoflags|$whoflags $whochan]} { lappend identlist $user } } } if {$whoflags == "" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 31 [list [join $identlist ", "]]]" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 50 [list $whoflags $whochan [join $identlist ", "]]]" } return 0 } proc lol_pub_bad { nick host hand chan arg command byX } { set arg [charfilter $arg] global lol botnick if {![botisop $chan]} { puthelp "notice $nick :[lang_text lol_lang_data [getlang $hand] 106 $chan]" return 0 } if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { if { $command == "ban" } { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]$command \[time\] \[reason\]" } else { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]$command \[reason\]" } return 0 } set who [lindex $arg 0] set ti [lindex $arg 1] if {[isnumber $ti]} { set reason [lrange $arg 2 end] } { if { $command == "banperm" } { set ti 0 } else { set ti "" } set reason [lrange $arg 1 end] } lol_do_bad $nick $hand $chan $who $ti $reason $command $byX } proc lol_do_bad { nick hand chan who time reason command byX } { global lol botnick ChanAccess if {[strlwr $who] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 30 ""]" return 0 } if {$reason == ""} { set reason "Pafffff !" } set KickList "" if {[onchan $who $chan]} { if {!$lol(bantype)} { set ipmask [lindex [split [maskhost $who![getchanhost $who $chan]] "@"] 1] set usermask [lindex [split [getchanhost $who $chan] "@"] 0] set banmask *!*$usermask@$ipmask } else { set banmask [getchanhost $who $chan] set banmask "*!*[string range $banmask [string first @ $banmask] e]" } } else { set banmask $who if {[string first "!" $banmask] == -1 && [string first "@" $banmask] == -1} { if {[isnumber [string index $banmask 0]]} { set banmask *!*@$banmask } else { set banmask $banmask*!*@* } } if {[string first "!" $banmask] == -1} { set banmask *!*$banmask } if {[string first "@" $banmask] == -1} { set banmask $banmask*@* } } foreach chanuser [chanlist $chan] { if {[string match [strlwr $banmask] [strlwr "$chanuser![getchanhost $chanuser $chan]"]] && $chanuser != $botnick } { if {[matchattr [nick2hand $chanuser $chan] $lol(protect_flags)|$lol(protect_flags) $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 29 ""]" return 0 } lappend KickList $chanuser } } putlog "[lang_text lol_lang_data [getlang $hand] 28 [list $nick [nick2hand $nick $chan] $command [join $KickList ","] $banmask $chan $reason]]" if {[info exists ChanAccess($chan)] && $byX } { if {$ChanAccess($chan)} { if { $command == "ban" && ![ischanban $banmask $chan]} { putserv "PRIVMSG X :ban $chan $banmask 1 75 $reason" } if { $command == "kick" } { putserv "PRIVMSG X :kick $chan $reason" } } } if { $command != "kick" && ![ischanban $banmask $chan]} { putserv "MODE $chan +b $banmask" } if { $KickList != "" } { putkick $chan [join $KickList ","] $reason } if { $command == "quick" } { utimer 7 "deban $chan $banmask" } if { $command != "ban" && $command != "banperm" } { return 0 } switch $time { "" { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 27 $banmask]" } 0 { if {![ispermban $banmask $chan]} { newchanban $chan $banmask $nick $reason $time puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 26 $banmask]" } } default { if {![isban $banmask $chan]} { newchanban $chan $banmask $nick $reason $time puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 25 "$time $banmask"]" } } } return 0 } proc deban {chan hostmask} { if {[botisop $chan]} {putserv "MODE $chan -b $hostmask" } } proc pub_lol_add { nick host hand chan arg command } { global lol set arg [charfilter $arg] if {![lol_check $nick $host $hand]} { return 0 } if {[llength $arg] < 1} { puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]add$command \[hand\]" return 0 } set who [lindex $arg 0] set alternate [lindex $arg 1] lol_add $nick $hand $chan $who $alternate $command } proc msg_lol_add { nick hand arg command } { set who [lindex $arg 1] set chan [strlwr [lindex $arg 2]] set alternate [lindex $arg 3] set usage "Synthaxe : add$command \[hand\]" if {![lol_msg_test $nick $hand $chan $arg "< 3" $usage "" ""]} { return 0 } lol_add $nick $hand $chan $who $alternate $command } proc lol_add { nick hand chan who alternate cmd } { global botnick set hostmask "$who![getchanhost $who $chan]" set host [lindex [split [getchanhost $who $chan] "@"] 1] set param [lol_test_rights $cmd parameter] if {![matchattr $hand [lol_test_rights $cmd flag] $chan]} { puthelp "PRIVMSG $nick :[lang_text lol_lang_data [getlang $hand] 16 ""]" return 0 } if {![onchan $who $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 11 "$who $chan"]" return 0 } if {[strlwr $who] == [strlwr $botnick]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 15 ""]" return 0 } if {[getting-users]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 17 ""]" return 0 } set whohand [nick2hand $who $chan] if {[validuser $whohand]} { if {$cmd == "user" || $cmd == "bot" } { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 18 "$who $whohand"]" return 0 } if {[matchattr $whohand -|+$param $chan]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 19 "$who $cmd $chan $whohand"]" } { chattr $whohand -|+$param $chan puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 20 "$who $chan ${cmd}list $whohand"]" puthelp "NOTICE $who :[lang_text lol_lang_data [getlang $whohand] 21 "$chan ${cmd}list $nick"]" } return 0 } if {[string match "*.users.undernet.org" [strlwr $host]]} { set whohost *!*@$host } else { set whohost [maskhost $hostmask] } if {$alternate != ""} { if {[validuser $alternate]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 23 $alternate] $usage" return 0 } if { $cmd == "bot" } { addbot $alternate $host setuser $alternate hosts $hostmask } else { adduser $alternate $whohost puthelp "NOTICE $who :[lang_text lol_lang_data [getlang $alternate] 22 "$chan ${cmd}list $nick $alternate"]" puthelp "NOTICE $who :[lang_text lol_lang_data [getlang $alternate] 14 $botnick]" } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 24 "$alternate $whohost"]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 20 "$who $chan ${cmd}list $alternate"]" chattr $alternate +p|+$param $chan return 0 } if {[validuser $who]} { puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 23 $who] $usage" } else { if { $cmd == "bot" } { addbot $who $host setuser $who hosts $hostmask } else { adduser $who $whohost puthelp "NOTICE $who :[lang_text lol_lang_data [getlang $who] 22 "$chan ${cmd}list $nick $who"]" puthelp "NOTICE $who :[lang_text lol_lang_data [getlang $who] 14 $botnick]" } puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 24 "$who $whohost"]" puthelp "NOTICE $nick :[lang_text lol_lang_data [getlang $hand] 20 "$who $chan ${cmd}list $who"]" chattr $who +p|+$param $chan } return 0 } ### END OF SCRIPT set nb_dir [file dirname [info script]] set nb_setscript $nb_dir/alltools.tcl if {![file exists $nb_setscript]} { putlog "*** LoL's TooLz requires now alltools.tcl. Please install it." } set nb_setscript $nb_dir/lang.tcl if {![file exists $nb_setscript]} { putlog "*** LoL's TooLz requires now lang.tcl. Please install it." } putlog "$lol(version) by Thor, Copyright (C) 1998-2002 LL Productions. Date : 19-10-02" putlog "Homepage : http://www.leonini.net/" putlog "Supported languages : French, English, Russian, type \002/msg $botnick help\002 for help or .help lol"