rendered paste body# # # ## ##### # @@@@ @@
# #### # # # # # @ @ @ @
# # # # # # ### ### # ### @@@@ @ @
# # # # # # # # # # # # @ @ @ @
#### #### #### ### # ### ### #### ### @@@@ @ @@
# [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 <MASK>, !QUICK <MASK>, !BAN <MASK>.
# 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 <tcl code>"
} {
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 <shell command>"
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 <nick>
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 <nick>"
} {
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 <nick|hand> [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 <nick|hand> \[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 <nick|hand> <host>
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 <nick|hand> <host>"
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 <nick> <flags>
proc pub_lol_chattr {nick host hand chan arg} {
lol_pub_chattr $nick $host $hand $chan $arg "chattr"
return 0
}
### !GCHATTR <nick> <flags>
proc pub_lol_gchattr {nick host hand chan arg} {
lol_pub_chattr $nick $host $hand $chan $arg "gchattr"
return 0
}
### !JOIN <chan> [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> \[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 <chan>
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 <parameter> <value>
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 <parameter> <value>"
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 <nick>
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 <nick>"
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 <nick>
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 <nick>"
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 <text>
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 <text>"
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 <expression or #chan>"
return 0
}
}
set lol_what $arg
foreach who [chanlist $chan] {
if {![validuser [nick2hand $who]] && $who != $botnick } { putserv "whois $who" }
}
return 0
}
### !BAN <nick|mask> [time] [reason]
proc pub_lol_ban {nick host hand chan arg} {
lol_pub_bad $nick $host $hand $chan $arg ban 0
return 0
}
### !BANPERM <nick|mask> [reason]
proc pub_lol_banperm {nick host hand chan arg} {
lol_pub_bad $nick $host $hand $chan $arg banperm 0
return 0
}
### !KICK <nick|mask> [reason]
proc pub_lol_kick {nick host hand chan arg} {
lol_pub_bad $nick $host $hand $chan $arg kick 0
return 0
}
### !QUICK <nick|mask> [reason]
proc pub_lol_quick {nick host hand chan arg} {
lol_pub_bad $nick $host $hand $chan $arg quick 0
return 0
}
### !UNBAN <mask|number>
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 <mask|number>"
return 0
}
lol_unban $nick $hand $chan $mask 0
return 0
}
### !MODE <chanmode>
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 <chanmode>"
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 <command>
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 <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 <topic>"
return 0
}
puthelp "TOPIC $chan :$arg"
return 0
}
### !INVITE <nick>
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 <nick>"
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 <nick>
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 <nick>"
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> <message>
proc dcc_lol_+welcome {hand idx arg} {
global TabWelcome
if {[llength $arg] < 2} { putdcc $idx "Synthaxe : .+welcome <#chan> <message>" ; 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> <message> 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 <nick!user@host>
proc dcc_lol_permident {hand idx arg} {
set arg [charfilter $arg]
if {[llength $arg] != 1} {
putdcc $idx "Synthaxe : .permident <nick!user@host>"
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 <nick>
proc dcc_lol_botnick {hand idx arg} {
global nick
if {[llength $arg] != 1} {
putdcc $idx "Synthaxe : .botnick <nick>"
return 0
}
set nick [charfilter $arg]
}
### .param <parameter> <value>
proc dcc_lol_param {hand idx arg} {
global lol botnick
set arg [charfilter $arg]
if {[llength $arg] != 2} {
putdcc $idx "Synthaxe : .param <parameter> <value>"
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 <nick> <#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 <hand>
proc dcc_lol_enable {hand idx arg} {
set arg [charfilter $arg]
if {[llength $arg] != 1} {
putdcc $idx "Synthaxe : .enable <hand>"
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 <hand>
proc dcc_lol_disable {hand idx arg} {
set arg [charfilter $arg]
if {[llength $arg] != 1} {
putdcc $idx "Synthaxe : .disable <hand>"
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> [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> \[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> <message>."
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> <message>"
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 <chan>
proc dcc_lol_remove {hand idx arg} {
set arg [charfilter $arg]
if {[llength $arg] != 1} {
putdcc $idx "Synthaxe : .remove <chan>"
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 <flags> \[#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 <chan>
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 <chan> <flags>
proc dcc_lol_mode {hand idx arg} {
set arg [charfilter $arg]
if {[llength $arg] < 2} {
putdcc $idx "Synthaxe : .mode <chan> <chan 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 <password>
proc msg_lol_silent {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : silent <password>"
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 <password>
proc msg_lol_unsilent {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : unsilent <password>"
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 <password>
proc msg_lol_unpermident {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : unpermident <password>"
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 <password>
proc msg_lol_unident {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : unident <password>"
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 <password> <nick>
proc msg_lol_botnick {mynick host hand arg} {
set arg [charfilter $arg]
global nick
set usage "Synthaxe : botnick <password> <nick>"
if {![lol_msg_test $mynick $hand "" $arg "!= 2" $usage "" ""]} { return 0 }
set nick [lindex $arg 1]
}
### addhost <password> <hand> <host>
proc msg_lol_addhost {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : addhost <password> <hand> <host>"
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 <password> <hand> <host>
proc msg_lol_delhost {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : delhost <password> <hand> <host>"
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 <password> <hand> <flags> [chan]
proc msg_lol_chattr {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : chattr <password> <hand> <flags> <chan>"
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 <password> <command> <chan>
proc msg_lol_mass {nick host hand arg} {
global masslist
set arg [charfilter $arg]
set usage "Synthaxe : mass <password> <[join $masslist "|"]> <chan>"
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 <password> <hand> <flags>
proc msg_lol_gchattr {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : gchattr <password> <hand> <flags>"
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 <password> <parameter> <value>
proc msg_lol_param {nick host hand arg} {
global lol botnick
set arg [charfilter $arg]
set usage "Synthaxe : param <password> <parameter> <value>"
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 <password> <hand>
proc msg_lol_enable {nick host hand arg} {
set arg [charfilter $arg]
global botnick
set usage "Synthaxe : enable <password> <hand>"
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 <password> <hand>
proc msg_lol_disable {nick host hand arg} {
global botnick
set arg [charfilter $arg]
set usage "Synthaxe : disable <password> <hand>"
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 <password> [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 <password> <hand>"
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 <password>"
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 <password> [nick!user@host]
proc msg_lol_permident {nick host hand arg} {
global botnick
set arg [charfilter $arg]
set usage "Synthaxe : permident <password> \[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 <password>
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 <password> <text>
proc msg_lol_broadcast {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : broadcast <password> <text>"
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 <password> <chan>
proc msg_lol_key {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : key <password> <chan>"
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 <password> <chan>
proc msg_lol_banlist {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : banlist <password> <chan>"
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 <password> <nick|mask> <chan> [reason]
proc msg_lol_kick {nick host hand arg} {
lol_msg_bad $nick $host $hand $arg kick 0
return 0
}
### quick <password> <nick|mask> <chan> [reason]
proc msg_lol_quick {nick host hand arg} {
lol_msg_bad $nick $host $hand $arg quick 0
return 0
}
### ban <password> <nick> <chan> [time] [reason]
proc msg_lol_ban {nick host hand arg} {
lol_msg_bad $nick $host $hand $arg ban 0
return 0
}
### banperm <password> <nick> <chan> [reason]
proc msg_lol_banperm {nick host hand arg} {
lol_msg_bad $nick $host $hand $arg banperm 0
return 0
}
### whoid <password> [chan] [flags]
proc msg_lol_whoid {nick host hand arg} {
set usage "Synthaxe : whoid <password> \[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 <chan> <flags>"
return 0
}
} {
set whoflags [lindex $arg 1]
}
}
lol_whoid $nick $host $hand $chan $whoflags
return 0
}
### unban <password> <mask|number> <chan>
proc msg_lol_unban {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : unban <password> <mask> <chan>"
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 <password> <chan> <flags>
proc msg_lol_mode {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : mode <password> <chan> <chan 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 <password> <nick>
proc msg_lol_whois {nick host hand arg} {
if {![validuser $hand]} { return 0 }
set arg [charfilter $arg]
set usage "Synthaxe : whois <password> <nick> \[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 <password> [chan]
proc msg_lol_invite {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : invite <password> \[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 <password> <chan> [chan pass]
proc msg_lol_join {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : join <passsword> <chan> \[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 <password> <chan>
proc msg_lol_remove {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : remove <password> <chan>"
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 <password> <chan> <message>
proc msg_lol_msg {nick host hand arg} {
set arg [charfilter $arg]
set usage "Synthaxe : msg <password> <chan> <message>"
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 <nick> <flags>"
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 <nick or hand>"
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 <password> <hand or nick> <chan>"
if {$command != "user" && ![lol_msg_test $nick $hand $chan $arg "< 3" $usage "" ""]} { return 0 }
set usage "Synthaxe : del$command <password> <hand or nick>"
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 <password> <nick|mask> <chan> \[time\] \[reason\]"
} else {
set usage "Synthaxe : $command <password> <nick|mask> <chan> \[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 <nick|mask> \[time\] \[reason\]"
} else {
puthelp "NOTICE $nick :Synthaxe : [string trim $lol(cmdchar)]$command <nick|mask> \[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 <nick> \[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 <password> <nick> <chan> \[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"