| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159 |
- #########################################################################
- ## BlackTools - The Ultimate Channel Control Script ##
- ## One TCL. One smart Eggdrop ##
- #########################################################################
- ######################### LOCAL CMDS TCL ############################
- #########################################################################
- ## ##
- ## BlackTools : http://blacktools.tclscripts.net ##
- ## Bugs report : http://www.tclscripts.net/ ##
- ## GitHub page : https://github.com/tclscripts/BlackToolS-TCL ##
- ## Online Help : irc://irc.undernet.org/tcl-help ##
- ## #TCL-HELP / UnderNet ##
- ## You can ask in english or romanian ##
- ## ##
- #########################################################################
- ################################ Commands ###################################
- ################################## report ###################################
- proc report:process {nick host host1 hand chan chan1 type what message} {
- global black
- if {[setting:get $chan reportnick]} {
- set cmd_status [btcmd:status $chan $hand "report" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set number [scan $black(report:flood) %\[^:\]]
- set timer [scan $black(report:flood) %*\[^:\]:%s]
-
- if {[info exists black(floodreport:$host1:$chan)]} {
- if {$black(floodreport:$host1:$chan) >= "$number"} {
- return
- }
- }
- foreach tmr [utimers] {
- if {[string match "*black(floodreport:$host1:$chan)*" [join [lindex $tmr 1]]]} {
- killutimer [lindex $tmr 2]
- }
- }
- if {![info exists black(floodreport:$host1:$chan)]} {
- set black(floodreport:$host1:$chan) 0
- }
- incr black(floodreport:$host1:$chan)
- utimer $timer [list unset black(floodreport:$host1:$chan)]
-
- if {$what == ""} {
- if {$type == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "report"
- }
- if {$type == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "report"
- }
- if {$type == "2"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "report"
- }
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![botisop $chan]} {
- return
- }
- if {[isbotnick $what]} {
- return
- }
- set handle [nick2hand $what]
- if {[validuser $handle]} {
- set found_acces 0
- foreach c [channels] {
- if {[matchattr $handle $black(exceptflags) $chan]} {
- set found_acces 1
- }
- }
- if {$found_acces == "1"} {
- return
- }
- }
- if {[string equal -nocase $what $nick]} {
- blacktools:tell $nick $host $hand $chan $chan1 report.5 none
- return
- }
- set getlang [string tolower [setting:get $chan lang]]
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- if {[onchan $what $chan]} {
- set replace(%msg.1%) $what
- set replace(%msg.2%) $nick
- set replace(%msg.8%) $message
- if {$message != ""} {
- set text [black:color:set "" $black(say.$getlang.report.2)]
- } else {
- set text [black:color:set "" $black(say.$getlang.report.3)]
- }
- set reply [join $text]
- set output [string map [array get replace] $reply]
- putserv "NOTICE @$chan :$output"
- blacktools:tell $nick $host $hand $chan $chan1 report.4 none
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 gl.usernotonchan $what
- }
- }
- }
- ################################# disable ###################################
- proc disable:process {nick host hand chan chan1 type what user} {
- global black
- set cmd_status [btcmd:status $chan $hand "disable" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
-
- if {$what == ""} {
- if {$type == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "disable"
- }
- if {$type == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "disable"
- }
- if {$type == "2"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "disable"
- }
- return
- }
- set local_cmds "h omsg o v ho man version mode cycle broadcast say act i stats t myset b black stick dr bot n id spam bw vr gag sb banlist k w anunt bt badchan idle limit seen clonescan securemode private guestnick greet leave topic next helped noidle skip topwords q note report alias"
- if {[matchattr $hand -|M $chan] && [lsearch -exact $what $local_cmds] < 0} {
- blacktools:tell $nick $host $hand $chan $chan1 disable.8 $what
- return
- }
- if {[string equal -nocase $user "global"] && [matchattr $hand nm]} {
- set return_cmd [btcmd:global:set $hand $what 1]
- switch $return_cmd {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.6 $what
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.7 $what
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.3 $what
- }
- 3 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.8 $what
- }
- }
- return
- }
- if {$user != ""} {
- btcmd:set:user $nick $host $hand $chan $chan1 $user $what "1"
- return
- }
- set return_cmd [btcmd:set $chan $hand $what 1]
-
- switch $return_cmd {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.1 $what
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.2 $what
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.3 $what
- }
- 3 {
- blacktools:tell $nick $host $hand $chan $chan1 disable.8 $what
- }
- }
- }
- ################################# enable ####################################
- proc enable:process {nick host hand chan chan1 type what user} {
- global black
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$what == ""} {
- if {$type == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "enable"
- }
- if {$type == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "enable"
- }
- if {$type == "2"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "enable"
- }
- return
- }
- if {[string equal -nocase $user "global"] && [matchattr $hand nm]} {
- set return_cmd [btcmd:global:set $hand $what 0]
- switch $return_cmd {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 enable.7 $what
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 enable.6 $what
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 enable.3 $what
- }
- }
- return
- }
- if {$user != ""} {
- btcmd:set:user $nick $host $hand $chan $chan1 $user $what "0"
- return
- }
- set gl_check [btcmd:gl:status $what]
- if {$gl_check == "1" && $type == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.8 $what
- }
- if {[matchattr $hand -|M $chan]} {
- set access "MANAGER"
- } elseif {[matchattr $hand n]} {
- set access "BOSS"
- } elseif {[matchattr $hand m]} {
- set access "OWNER"
- } elseif {[matchattr $hand o]} {
- set access "MASTER"
- }
- set disable_level [btcmd:getlevel $chan $what]
- if {$access == "MANAGER" && $disable_level == "OWNER"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
- return
- }
- if {$access == "OWNER" && $disable_level == "BOSS"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
- return
- }
- if {$access == "MANAGER" && $disable_level == "BOSS"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
- return
- }
- if {$access == "MANAGER" && $disable_level == "MASTER"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
- return
- }
- if {$access == "MASTER" && $disable_level == "OWNER"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
- return
- }
- if {$access == "MASTER" && $disable_level == "BOSS"} {
- blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
- return
- }
- set return_cmd [btcmd:set $chan $hand $what 0]
- switch $return_cmd {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 enable.2 $what
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 enable.1 $what
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 enable.3 $what
- }
- }
- }
- ################################### t #################################
- proc t:process {nick host hand chan chan1 topics type} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "t" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$topics == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "t"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "t"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "t"
- }
- }
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {[setting:get $chan showhandle]} {
- set topics "($hand) $topics"
- } else { set topics "$topics"
- }
- if {[setting:get $chan xonly]} {
- if {![botisop $chan]} {
- putserv "PRIVMSG $black(chanserv) :topic $chan $topics"
- return
- }
- }
- if {![botisop $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- putserv "TOPIC $chan :$topics"
- }
- ################################# i ###################################
- proc i:process {nick host hand chan chan1 inick type} {
- global botnick black
- set show_inick $inick
- set cmd_status [btcmd:status $chan $hand "i" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$inick == "" && $chan != $chan1} {
- set inick $nick
- }
- if {$inick == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "i"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "i"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "i"
- }
- }
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {![botisop $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- putserv "USERHOST :$inick"
- bind RAW - 302 i:online:check
- set ::getnick $nick
- set ::hand $hand
- set ::host $host
- set ::chan $chan
- set ::chan1 $chan1
- set ::type $type
- set ::inick $inick
- set ::show_inick $show_inick
- }
- proc i:online:check {from keyword arguments } {
- global black
- set anick $::getnick
- set hand $::hand
- set host $::host
- set chan $::chan
- set chan1 $::chan1
- set inick $::inick
- set show_inick $::show_inick
-
- set hostname [lindex [split $arguments] 1]
- if {[regexp {\+} $hostname]} {
- set split_host [split $hostname "+"]
- } else {
- set split_host [split $hostname "-"]
- }
- set mask [lindex $split_host 1]
- set getnick [string map {
- "=" ""
- ":" ""
- } [lindex $split_host 0]]
- if {$getnick != ""} {
- set replace(%nick%) $anick
- set replace(%chan%) $chan
- set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- set text [black:color:set "" $black(say.$getlang.i.7)]
- set getmsg [join $text]
- if {[info exists black(say.$getlang.i.7)]} {
- set imessage [string map [array get replace] $getmsg]
- }
- if {$inick != ""} {
- if {[onchan $inick $chan]} {
- blacktools:tell $anick $host $hand $chan $chan1 i.1 $show_inick
- check:if:bind "i:online:check" "302"
- return
- }
- putserv "INVITE $inick $chan"
- putserv "PRIVMSG $inick :$imessage"
- blacktools:tell $anick $host $hand $chan $chan1 i.2 $show_inick
- }
- } else {
- blacktools:tell $anick $host $hand $chan $chan1 gl.notonline "$inick"
- }
- check:if:bind "i:online:check" "302"
- }
- ############################### purge ###############################
- proc purge:process {nick host hand chan chan1 reason} {
- global black
- set cmd_status [btcmd:status $chan $hand "purge" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {!($black(homechan) == "") && ![string equal -nocase $black(homechan) "#no_home_chan"]} {
- if {[string equal -nocase $chan $black(homechan)]} {
- blacktools:tell:prv $nick $host $hand delchan.5 $chan
- return
- }
- }
- channel remove $chan
- delchan:all $chan
- topwords:delete $chan
- putserv "PART $chan :PURGED by $hand :$reason"
- }
- ################################### v #################################
- proc v:process {nick host hand chan chan1 arg} {
- global botnick black
- set xban 0
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set cmd_status [btcmd:status $chan $hand "v" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {![botisop $chan] && ![setting:get $chan xonly]} { blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- if {$arg == ""} {
- set arg $nick
- }
- if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
- set xban 1
- }
- if {[string equal -nocase $arg "+"]} {
- set noxonly 0
- set userlist ""
- foreach voicenick [chanlist $chan] {
- if {[isvoice $voicenick $chan]} { continue }
- if {[isbotnick $voicenick]} { continue }
- if {$xban == "0"} {
- set noxonly 1
- pushmode $chan +v $voicenick
- }
- }
- if {$noxonly == "0"} {
- foreach getuser [chanlist $chan] {
- if {![isvoice $getuser $chan]} {
- lappend userlist $getuser
- }
- }
- putserv "PRIVMSG $black(chanserv) :voice $chan [join $userlist]"
- }
- return
- }
- if {[string equal -nocase $arg "-"]} {
- set noxonly 0
- set userlist ""
- foreach voicenick [chanlist $chan] {
- if {[isbotnick $voicenick]} { continue }
- if {$xban == "0"} {
- set noxonly 1
- pushmode $chan -v $voicenick
- }
- }
- if {$noxonly == "0"} {
- foreach getuser [chanlist $chan] {
- if {[isvoice $getuser $chan]} {
- lappend userlist $getuser
- }
- }
- putserv "PRIVMSG $black(chanserv) :devoice $chan [join $userlist]"
- }
- return
- }
- set voicelist ""
- set devoicelist ""
- foreach voicenick [split $arg] {
- if {[isbotnick $voicenick]} { continue }
- if {[isvoice $voicenick $chan]} {
- if {$xban == "0"} {
- pushmode $chan -v $voicenick
- } else { lappend devoicelist $voicenick }
- } else {
- if {$xban == "0"} {
- pushmode $chan +v $voicenick
- } else { lappend voicelist $voicenick }
- }
- }
- if {$devoicelist != ""} {
- putserv "PRIVMSG $black(chanserv) :devoice $chan [join $devoicelist]"
- }
- if {$voicelist != ""} {
- putserv "PRIVMSG $black(chanserv) :voice $chan [join $voicelist]"
- }
- }
- ################################## ho #################################
- proc ho:process {nick host hand chan chan1 arg} {
- global botnick black
- set xban 0
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set cmd_status [btcmd:status $chan $hand "ho" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {![botisop $chan] && ![setting:get $chan xonly]} { blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- if {$arg == ""} {
- set arg $nick
- }
- if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
- set xban 1
- }
- if {[string equal -nocase $arg "+"]} {
- foreach hopnick [chanlist $chan] {
- if {[ishalfop $hopnick $chan]} { continue }
- if {$xban == "0"} {
- pushmode $chan +h $hopnick
- } else { return }
- }
- return
- }
- if {[string equal -nocase $arg "-"]} {
- foreach hopnick [chanlist $chan] {
- if {![ishalfop $hopnick $chan]} { continue }
- if {[isbotnick $hopnick]} { continue }
- if {[onchan $black(chanserv) $chan] && ![setting:get $chan xonly]} {
- blacktools:tell $nick $host $hand $chan $chan1 massdeop.429 $black(chanserv)
- return
- }
- if {$xban == "0"} {
- pushmode $chan -h $hopnick
- } else { return }
- }
- return
- }
- foreach hopnick [split $arg] {
- if {[isbotnick $hopnick]} { continue }
- if {[ishalfop $hopnick $chan]} {
- if {$xban == "0"} {
- pushmode $chan -h $hopnick
- } else { return }
- } else {
- if {![setting:get $chan xonly]} {
- pushmode $chan +h $hopnick
- } else { return }
- }
- }
- }
- ################################## o ##################################
- proc o:process {nick host hand chan chan1 arg} {
- global botnick black
- set xban 0
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set cmd_status [btcmd:status $chan $hand "o" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {![botisop $chan] && ![setting:get $chan xonly]} { blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- if {$arg == ""} {
- set arg $nick
- }
- if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
- set xban 1
- }
- if {[string equal -nocase $arg "+"]} {
- set userlist ""
- set noxonly 0
- foreach opnick [chanlist $chan] {
- if {[isop $opnick $chan]} { continue }
- if {$xban == "0"} {
- set noxonly 1
- pushmode $chan +o $opnick
- }
- }
- if {$noxonly == "0"} {
- foreach getuser [chanlist $chan] {
- if {![isop $getuser $chan]} {
- lappend userlist $getuser
- }
- }
- putserv "PRIVMSG $black(chanserv) :op $chan [join $userlist]"
- }
- return
- }
- if {[string equal -nocase $arg "-"]} {
- set userlist ""
- set noxonly 0
- foreach opnick [chanlist $chan] {
- if {![isop $opnick $chan]} { continue }
- if {[isbotnick $opnick]} { continue }
- if {[string equal -nocase $opnick $nick]} { continue }
- if {[onchan $black(chanserv) $chan] && ![setting:get $chan xonly]} {
- blacktools:tell $nick $host $hand $chan $chan1 o.1 $black(chanserv)
- return
- }
- if {$xban == "0"} {
- set noxonly 1
- pushmode $chan -o $opnick
- }
- }
- if {$noxonly == "0"} {
- foreach getuser [chanlist $chan] {
- if {[isop $getuser $chan]} {
- lappend userlist $getuser
- }
- }
- putserv "PRIVMSG $black(chanserv) :deop $chan [join $userlist]"
- }
- return
- }
- set oplist ""
- set deoplist ""
- foreach opnick [split $arg] {
- if {[isbotnick $opnick]} { continue }
- if {[isop $opnick $chan]} {
- if {$xban == "0"} {
- pushmode $chan -o $opnick
- } else { lappend deoplist $opnick }
- } else {
- if {$xban == "0"} {
- pushmode $chan +o $opnick
- } else { lappend oplist $opnick }
- }
- }
- if {$deoplist != ""} {
- putserv "PRIVMSG $black(chanserv) :deop $chan [join $deoplist]"
- }
- if {$oplist != ""} {
- putserv "PRIVMSG $black(chanserv) :op $chan [join $oplist]"
- }
- }
- ################################ say ##################################
- proc say:process {nick host hand chan chan1 text type} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "say" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$text == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "say"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "say"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "say"
- }
- }
- return 0
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- putserv "PRIVMSG $chan :$text"
- }
- ################################ act ##################################
- proc act:process {nick host hand chan chan1 text type} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "act" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$text == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "act"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "act"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "act"
- }
- }
- return 0
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- putserv "PRIVMSG $chan :\001ACTION $text\001"
- }
- ############################## version ################################
- proc version:process {nick host hand chan chan1 arg} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "version" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {$arg != ""} { return }
- blacktools:tell $nick $host $hand $chan $chan1 version.1 "$black(vers) [ctime $black(current_modif)]"
- }
- ############################### cycle #################################
- proc cycle:process {nick host hand chan chan1 reason} {
- global black botnick
- set cmd_status [btcmd:status $chan $hand "cycle" 0]
- set reply ""
- if {$cmd_status == "1"} {
- return
- }
- set getlang [string tolower [setting:get $chan lang]]
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {[regexp {^[0-9]} $reason] && [matchattr $hand nmo|M $chan]} {
- set replace(%msg.1%) $reason
- set text [black:color:set "" $black(say.$getlang.cycle.2)]
- set reply [join $text]
- putserv "PART $chan :[string map [array get replace] $reply]"
- channel set $chan +inactive
- utimer $reason [list channel set $chan -inactive]
- return
- }
- if {$reason == ""} {
- set reason "$black(say.$getlang.cycle.1)"
- set len [llength $reason]
- set random [expr int(rand()*$len)]
- set reason [lindex $reason $random]
- set text [black:color:set "" $reason]
- set reply [join $text]
- } else {
- set reply $reason
- }
- putserv "PART $chan :$reply"
- putserv "JOIN $chan"
- }
- ################################### mode ######################################
- proc mode:process {nick host hand chan chan1 modes type hosts} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "mode" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$modes == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "mode"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "mode"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "mode"
- }
- }
- return 0
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {![botisop $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- if {![regexp {^[+ -]} $modes]} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "mode"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "mode"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "mode"
- }
- }
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 mode.6 $modes
- if {![string equal -nocase $modes "+b"] && ![string equal -nocase $modes "-b"]} {
- putserv "MODE $chan $modes"
- channel set $chan chanmode $modes
- } else {
- putserv "MODE $chan $modes $hosts"
- }
- }
- ################################## myset #############################
- proc myset:process {nick host hand chan chan1 flags typez type chan2 arg} {
- global black
- set cmd_status [btcmd:status $chan $hand "myset" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set show_greet $arg
- set show_typez $typez
- if {$flags == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return 0
- }
- switch -exact -- [string tolower $flags] {
- lang {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "reset"]} {
- setuser $hand XTRA OUTPUT_LANG
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- return
- }
- if {[string equal -nocase $typez "show"]} {
- set get [getuser $hand XTRA OUTPUT_LANG]
- if {$get == ""} { set get "N/A" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- if {![file exists "$black(dirname)/BlackTools/lang/BT.[string tolower $typez].lang.tcl"]} {
- blacktools:tell $nick $host $hand $chan $chan1 myset.5 \002[string tolower $typez]\002
- return
- }
- setuser $hand XTRA OUTPUT_LANG $typez
- blacktools:tell $nick $host $hand $chan $chan1 myset.1 $typez
- return
- }
- addhost {
- if {[matchattr $hand mno]} {
- set found_it 0
- set found_user ""
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {![string equal -nocase $typez "-telnet!*@*"]} {
- foreach u [userlist] {
- set h [getuser $u hosts]
- foreach hs $h {
- if {[string match -nocase $hs $typez]} {
- set found_it 1
- set found_user $u
- }
- }
- }
- }
- if {$found_it == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 addhost.1 "[split $found_user] $typez"
- return
- }
- setuser $hand HOSTS $typez
- blacktools:tell $nick $host $hand $chan $chan1 myset.7 $typez
- }
- }
- delhost {
- if {[matchattr $hand mno]} {
- set found_it 0
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- set h [getuser $hand hosts]
- foreach hs $h {
- if {[string match -nocase $hs $typez]} {
- set found_it 1
- }
- }
- if {$found_it == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 myset.9 $typez
- return
- }
- delhost $hand $typez
- blacktools:tell $nick $host $hand $chan $chan1 myset.8 $typez
- }
- }
- greet {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "show"]} {
- set get [getuser $hand INFO]
- if {$get == ""} { set get "N/A" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- if {[string equal -nocase $typez "reset"]} {
- setuser $hand INFO ""
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- return
- }
- setuser $hand INFO $arg
- blacktools:tell $nick $host $hand $chan $chan1 myset.6 $show_greet
- }
- auto {
- if {[matchattr $hand mno|M $chan]} {
- if {[regexp {^[&#]} $chan2]} {
- set actchan $chan2
- } else {
- if {[string equal -nocase $chan2 "global"]} {
- set actchan "global"
- } else {
- set actchan $chan
- }
- }
- if {![regexp {^[+ -]} $typez]} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- set verify [string trim $typez {"+","-"}]
- if {![string equal -nocase $verify "o"] && ![string equal -nocase $verify "v"]} {
- if {$type == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- if {$type == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- return
- }
- if {[matchattr $hand mno] && [string equal -nocase "$actchan" "global"]} {
- if {[string match -nocase $typez "+o"]} {
- if {[matchattr $hand g]} {
- chattr $hand -g
- }
- chattr $hand +a
- blacktools:tell $nick $host $hand $actchan $chan1 auto.6 $hand
- }
- if {[string match -nocase $typez "-o"]} {
- chattr $hand -a
- blacktools:tell $nick $host $hand $actchan $chan1 auto.14 $hand
- }
- if {[string match -nocase $typez "+v"]} {
- if {[matchattr $hand a]} {
- chattr $hand -a
- }
- chattr $hand +g
- blacktools:tell $nick $host $hand $actchan $chan1 auto.7 $hand
- }
- if {[string match -nocase $typez "-v"]} {
- chattr $hand -g
- blacktools:tell $nick $host $hand $actchan $chan1 auto.15 $hand
- }
- return
- }
- if {[string match -nocase $typez "+o"]} {
- if {[matchattr $hand -|g $actchan]} {
- chattr $hand -|-g $actchan
- }
- chattr $hand -|a $actchan
- blacktools:tell $nick $host $hand $actchan $chan1 auto.8 $hand
- }
- if {[string match -nocase $typez "-o"]} {
- chattr $hand -|-a $actchan
- blacktools:tell $nick $host $hand $actchan $chan1 auto.16 $hand
- }
- if {[string match -nocase $typez "+v"]} {
- if {[matchattr $hand -|a $actchan]} {
- chattr $hand -|-a $actchan
- }
- chattr $hand -|g $actchan
- blacktools:tell $nick $host $hand $actchan $chan1 auto.9 $hand
- }
- if {[string match -nocase $typez "-v"]} {
- chattr $hand -|-g $actchan
- blacktools:tell $nick $host $hand $actchan $chan1 auto.17 $hand
- }
- }
- }
- handle {
- if {[matchattr $hand mno|M $chan]} {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "show"]} {
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $hand"
- return
- }
- if {[validuser $typez]} {
- blacktools:tell $nick $host $hand $chan $chan1 chuser.3 none
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 myset.4 "$show_typez"
- chhandle $hand $typez
- }
- }
- notes {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- switch $typez {
- on {
- blacktools:tell $nick $host $hand $chan $chan1 myset.19 "myset"
- setuser $hand XTRA NO_NOTES
- }
-
- off {
- blacktools:tell $nick $host $hand $chan $chan1 myset.20 "myset"
- setuser $hand XTRA NO_NOTES 1
- }
-
- show {
- set get [getuser $hand XTRA NO_NOTES]
- if {$get != ""} { set get "OFF" } else { set get "ON" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- default {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- }
- }
- }
- noteexpire {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "reset"]} {
- setuser $hand XTRA NOTE_EXPIRE
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- return
- }
- if {[string equal -nocase $typez "show"]} {
- set get [getuser $hand XTRA NOTE_EXPIRE]
- if {$get == ""} { set get "N/A" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- if {![regexp {^[0-9]} $typez]} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- set return_time [time_return_minute $typez]
- if {$return_time == "-1"} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- setuser $hand XTRA NOTE_EXPIRE [string tolower $typez]
- blacktools:tell $nick $host $hand $chan $chan1 myset.13 $typez
- }
- autoinvite {
- switch [string tolower $typez] {
-
- show {
- set get [getuser $hand XTRA AUTOINVITE]
- if {$get == ""} { set get "N/A" }
- if {$get == "1"} { set get "on"} else { set get "off" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- }
- reset {
- setuser $hand XTRA AUTOINVITE
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- }
- on {
- setuser $hand XTRA AUTOINVITE 1
- blacktools:tell $nick $host $hand $chan $chan1 myset.3 $typez
- }
- off {
- setuser $hand XTRA AUTOINVITE 0
- blacktools:tell $nick $host $hand $chan $chan1 myset.3 $typez
- }
- }
- }
- output {
- switch [string tolower $typez] {
- show {
- set get [getuser $hand XTRA OUTPUT_TYPE]
- if {$get == ""} { set get "N/A" }
- if {$get == "0"} { set get "NOTICE" } elseif {$get == "1"} { set get "CHAN" } elseif {$get == "2"} { set get "MSG" } else { set get "NOTICE"}
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- }
- reset {
- setuser $hand XTRA OUTPUT_TYPE
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- }
- notice {
- setuser $hand XTRA OUTPUT_TYPE 0
- blacktools:tell $nick $host $hand $chan $chan1 myset.2 $typez
- }
- chan {
- setuser $hand XTRA OUTPUT_TYPE 1
- blacktools:tell $nick $host $hand $chan $chan1 myset.2 $typez
- }
- msg {
- setuser $hand XTRA OUTPUT_TYPE 2
- blacktools:tell $nick $host $hand $chan $chan1 myset.2 $typez
- }
- }
- }
- colors {
- if {[matchattr $hand mno|MAOV $chan]} {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "reset"]} {
- setuser $hand XTRA OUTPUT_COLORS
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- return
- }
- if {[string equal -nocase $typez "show"]} {
- set get [getuser $hand XTRA OUTPUT_COLORS]
- if {$get == ""} { set get $black(default_colors) }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- set validcolors "bold underline red blue green yellow orange cyan grey brown purple pink black"
- set notvalid 0
- if {[llength $arg] > 4 || [llength $arg] < 4} {
- blacktools:tell $nick $host $hand $chan $chan1 myset.14 none
- return
- }
- foreach color $arg {
- if {[lsearch [string tolower $color] $validcolors] < -1} {
- set notvalid 1
- }
- }
- if {$notvalid == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 myset.15 none
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 myset.16 $show_greet
- setuser $hand XTRA OUTPUT_COLORS [string tolower $arg]
- }
- }
- mychan {
- if {[matchattr $hand mno|MAOV $chan]} {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "reset"]} {
- setuser $hand XTRA MYCHAN
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- return
- }
- if {[string equal -nocase $typez "show"]} {
- set get [getuser $hand XTRA MYCHAN]
- if {$get == ""} { set get "N/A" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- if {![regexp {^[&#]} $typez]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![validchan $typez]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- setuser $hand XTRA MYCHAN [string tolower $typez]
- blacktools:tell $nick $host $hand $chan $chan1 myset.10 $typez
- }
- }
- mychar {
- if {[matchattr $hand mno|MAOV $chan]} {
- if {$typez == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- return
- }
- if {[string equal -nocase $typez "reset"]} {
- setuser $hand XTRA MYCHAR
- blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
- return
- }
- if {[string equal -nocase $typez "show"]} {
- set get [getuser $hand XTRA MYCHAR]
- if {$get == ""} { set get "N/A" }
- blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
- return
- }
- setuser $hand XTRA MYCHAR [string tolower $typez]
- blacktools:tell $nick $host $hand $chan $chan1 myset.18 $typez
- }
- }
- default {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
- }
- }
- }
- }
- }
- ################################# set #################################
- proc set:process {nick host hand chan chan1 flags type type1} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "set" 0]
- if {$cmd_status == "1"} {
- return
- }
- set getlang [string tolower [setting:get $chan lang]]
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- set flags [string tolower $flags]
- if {[matchattr $hand q]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set choption [check_option $nick $host $hand $chan $chan1 $flags $type1 "$flags"]
- if {$choption == "0"} { return }
- if {[regexp {^[+-]} $flags]} {
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- set black_setting [setting:exists $flags]
- if {$black_setting == "1"} {
- set iflag [string map {"+" ""
- "-" ""} $flags]
- if {![matchattr $hand n]} {
- if {[string equal -nocase "$iflag" "invisible"] || [string equal -nocase "$iflag" "forward"]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.5 $flags
- return
- }
- }
- if {[string equal -nocase "$iflag" "settingsaved"]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.5 $flags
- return
- }
- set status [setting:status $chan $flags ""]
- switch $status {
- 0 {
- if {[regexp {^[-]} $flags]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.4 $flags
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 set.6 $flags
- }
- 1 {
- if {[regexp {^[+]} $flags]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.4 $flags
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 set.6 $flags
- }
- }
- if {[string equal -nocase "+xonly" $flags]} {
- if {![info exists black(logged)]} {
- blacktools:tell $nick $host $hand $chan $chan1 login.3 none
- return
- }
- }
- setting:set $chan $flags ""
-
- if {[string equal -nocase "+anunt" $flags]} {
- if {[setting:get $chan anunt-showtime] != ""} {
- set time [setting:get $chan anunt-showtime]
- } else {
- set time $black(anunttime)
- }
- set scan_time [time_return_minute $time]
- set black(anunt:$chan:timer_start) $scan_time
- }
- if {[string equal -nocase "+topwords" $flags]} {
- set black(topwords:$chan:timer_start) 1
- }
- if {[string equal -nocase "-anunt" $flags]} {
- if {[info exists black(anunt:$chan:timer_start)]} {
- unset black(anunt:$chan:timer_start)
- }
- if {[info exists black(anunt:counter:$chan)]} {
- unset black(anunt:counter:$chan)
- }
- }
- if {[string equal -nocase "-topwords" $flags]} {
- set black(topwords:$chan:timer_start) 1
- if {[info exists black(topwords:$chan:timer_start)]} {
- unset black(topwords:$chan:timer_start)
- }
- if {[info exists black(topwords:counter:$chan)]} {
- unset black(topwords:counter:$chan)
- }
- }
- if {[string equal -nocase "-voiceme"]} {
- if {[info exists black(voiceme:stat:$chan)]} {
- unset black(voiceme:stat:$chan)
- }
- }
- if {[string equal -nocase "-voiceonmsg"]} {
- if {[info exists black(voiceonmsg:stat:$chan)]} {
- unset black(voiceonmsg:stat:$chan)
- }
- }
- if {[string equal -nocase "+quoteofday" $flags]} {
- if {[setting:get $chan quote-showtime] != ""} {
- set time [setting:get $chan quote-showtime]
- } else {
- set time $black(quote:msgtime)
- }
- set scan_time [time_return_minute $time]
- set black(quote:$chan:timer_start) $scan_time
- }
- if {[string equal -nocase "-quoteofday" $flags]} {
- if {[info exists black(quote:$chan:timer_start)]} {
- unset black(quote:$chan:timer_start)
- }
- if {[info exists black(quote:counter:$chan)]} {
- unset black(quote:counter:$chan)
- }
- }
- if {[string equal -nocase "+clonescan" $flags]} {
- if {[setting:get $chan clonescan-scantime] != ""} {
- set time [setting:get $chan clonescan-scantime]
- } else {
- set time $black(clonescantime)
- }
- set scan_time [time_return_minute $time]
- set black(clonescan:$chan:timer_start) $scan_time
- }
- if {[string equal -nocase "-clonescan" $flags]} {
- if {[info exists black(clonescan:$chan:timer_start)]} {
- unset black(clonescan:$chan:timer_start)
- }
- if {[info exists black(clonescan:counter:$chan)]} {
- unset black(clonescan:counter:$chan)
- }
- }
- if {[string equal -nocase "+antibadchan" $flags]} {
- if {[setting:get $chan badchan-scantime] != ""} {
- set time [setting:get $chan badchan-scantime]
- } else {
- set time $black(badchan:scantime)
- }
- set scan_time [time_return_minute $time]
- set black(badchan:$chan:timer_start) $scan_time
- }
- if {[string equal -nocase "+voiceme" $flags]} {
- if {[setting:get $chan voiceme-showtime] != ""} {
- set time [setting:get $chan voiceme-showtime]
- } else {
- set time $black(voiceme:msgtime)
- }
- set scan_time [time_return_minute $time]
- set black(voiceme:$chan:timer_start) $scan_time
- }
- if {[string equal -nocase "-voiceme" $flags]} {
- if {[info exists black(voiceme:$chan:timer_start)]} {
- unset black(voiceme:$chan:timer_start)
- }
- if {[info exists black(voiceme:counter:$chan)]} {
- unset black(voiceme:counter:$chan)
- }
- }
- if {[string equal -nocase "-antibadchan" $flags]} {
- if {[info exists black(badchan:$chan:timer_start)]} {
- unset black(badchan:$chan:timer_start)
- }
- if {[info exists black(badchan:counter:$chan)]} {
- unset black(badchan:counter:$chan)
- }
- }
- if {[string equal -nocase "+xonly" $flags]} {
- if {![info exists black(logged)]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.noxonly none
- return
- }
- }
- if {[string equal -nocase "+limit" $flags]} {
- set black(limit:$chan:timer_start) 1
- }
- if {[string equal -nocase "+voiceonmsg" $flags]} {
- set black(voiceonmsg:$chan:timer_start) 1
- }
- if {[string equal -nocase "-limit" $flags]} {
- if {[info exists black(limit:$chan:timer_start)]} {
- unset black(limit:$chan:timer_start)
- }
- }
- if {[string equal -nocase "+idleop" $flags] || [string equal -nocase "+idlevoice" $flags] || [string equal -nocase "+idlehalfop" $flags]} {
- antidle:set $chan
- }
- if {[string equal -nocase "-idleop" $flags] || [string equal -nocase "-idlevoice" $flags] || [string equal -nocase "-idlehalfop" $flags]} {
- antidle:unset $chan
- }
- if {[string equal -nocase "+antispam" $flags]} {
- if {[setting:get $chan antispam-scantime] != ""} {
- set time [setting:get $chan antispam-scantime]
- } else {
- set time $black(spamcycle)
- }
- set scan_time [time_return_minute $time]
- set black(antispam:$chan:timer_start) $scan_time
- }
- if {[string equal -nocase "-antispam" $flags]} {
- if {[info exists black(antispam:$chan:timer_start)]} {
- unset black(antispam:$chan:timer_start)
- }
- if {[info exists black(antispam:counter:$chan)]} {
- unset black(antispam:counter:$chan)
- }
- }
- if {[string equal -nocase "+securemode" $flags]} {
- putserv "MODE $chan :+Dm"
- foreach tmr [utimers] {
- if {[string match "*securemode:timer*" [join [lindex $tmr 1]]]} {
- return
- }
- }
- utimer 30 [list securemode:timer]
- }
- if {[string equal -nocase "-securemode" $flags]} {
- set found_list 0
- foreach tmr [utimers] {
- if {[string match "*securemode:timer*" [join [lindex $tmr 1]]]} {
- putserv "MODE $chan :-Dm"
- set replace(%chan%) $chan1
- set text2 [black:color:set "" $black(say.$getlang.securemode.11)]
- set reply2 [join $text2]
- putserv "PRIVMSG $chan :[string map [array get replace] $reply2]"
- if {[info exists black(secure:$chan:list)]} {
- set found_list 1
- if {[llength $black(secure:$chan:list)] > 0} {
- foreach entry $black(secure:$chan:list) {
- putserv "MODE $chan +v $entry"
- if {[info exists black(securecode:$entry:$chan)]} {
- unset black(securecode:$entry:$chan)
- }
- }
- }
- }
- }
- }
- if {$found_list == "1"} {
- if {[info exists black(secure:$chan:list)]} {
- unset black(secure:$chan:list)
- }
- }
- }
- return
- }
- set why [catch {channel set $chan $flags} error]
- if {$why == "1"} { blacktools:tell $nick $host $hand $chan $chan1 set.5 $flags
- return
- } else {
- channel set $chan $flags ; blacktools:tell $nick $host $hand $chan $chan1 set.6 $flags
- }
- } else {
- if {[matchattr $hand nm]} {
- set check_eggcmd [egg:setting_check $flags]
- if {$check_eggcmd == "1"} {
- set return [egg:process $nick $host $hand $chan $chan1 $flags $type]
- if {$return == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 set.2 "$flags $type"
- } elseif {$return == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 set.1 "$flags $type"
- return
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 set.9 "$flags $type"
- return
- }
- return
- }
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- set black_setting [setting:exists $flags]
- set int_set [catch {channel set $chan $flags $type} error]
- if {$black_setting == "0" && $int_set == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- set choption 1
- set checkflags $flags
- if {$choption == "0"} { return }
- if {[string equal -nocase "joinflood" $flags] || [string equal -nocase "badchan-floodcontrol" $flags] || [string equal -nocase "antijoinflood-userset" $flags] || [string equal -nocase "antirepeat-setting" $flags] || [string equal -nocase "chanflood" $flags]} {
- if {![regexp {[0-9]:[0-9]} $type]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- }
- if {[string equal -nocase "url" $flags]} {
- if {$type == ""} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- }
- if {[string equal -nocase "badchan-bmethod" $flags] || [string equal -nocase "badnick-bmethod" $flags]} {
- if {[regexp {^[0-9]} $type] && [regexp {[a-z]} $type]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- } elseif {![regexp {^[0-9]} $type]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- } elseif {$type < 1 || $type > 2} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- }
- if {[string equal -nocase "anunt-showtime" $flags]} {
- if {$type != ""} {
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(anunttime)
- set scan_time [time_return_minute $time]
- }
- set black(anunt:$chan:timer_start) $scan_time
- if {[info exists black(anunt:counter:$chan)]} {
- set black(anunt:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "voiceme-showtime" $flags]} {
- if {$type != ""} {
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(voiceme:msgtime)
- set scan_time [time_return_minute $time]
- }
- set black(voiceme:$chan:timer_start) $scan_time
- if {[info exists black(voiceme:counter:$chan)]} {
- set black(voiceme:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "quote-showtime" $flags]} {
- if {$type != ""} {
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(quote:msgtime)
- set scan_time [time_return_minute $time]
- }
- set black(quote:$chan:timer_start) $scan_time
- if {[info exists black(quote:counter:$chan)]} {
- set black(quote:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "badchan-scantime" $flags]} {
- if {$type != ""} {
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(badchan:scantime)
- set scan_time [time_return_minute $time]
- }
- set black(badchan:$chan:timer_start) $scan_time
- if {[info exists black(badchan:counter:$chan)]} {
- set black(badchan:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "idle-scantime" $flags]} {
- if {$type != ""} {
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(idleinterval)
- set scan_time [time_return_minute $time]
- }
- set black(idle:$chan:timer_start) $scan_time
- if {[info exists black(idle:counter:$chan)]} {
- set black(idle:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "antispam-scantime" $flags]} {
- if {$type != ""} {
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(spamcycle)
- set scan_time [time_return_minute $time]
- }
- set black(antispam:$chan:timer_start) $scan_time
- if {[info exists black(antispam:counter:$chan)]} {
- set black(antispam:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "clonescan-scantime" $flags]} {
- if {$type != ""} {
- set time ""
- set scan_time [time_return_minute $type]
- if {$scan_time == "-1"} {
- set time $black(clonescantime)
- set scan_time [time_return_minute $time]
- }
- set black(clonescan:$chan:timer_start) $scan_time
- if {[info exists black(clonescan:counter:$chan)]} {
- set black(clonescan:counter:$chan) 0
- }
- }
- }
- if {[string equal -nocase "leave-method" $flags]} {
- if {![string equal -nocase "notice" $type] && ![string equal -nocase "privmsg" $type]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "leave"]
- if {$choption == "0"} { return }
- }
- }
- if {[string equal -nocase "greet-method" $flags]} {
- if {![string equal -nocase "notice" $type] && ![string equal -nocase "privmsg" $type]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "greet"]
- if {$choption == "0"} { return }
- }
- }
- if {[string equal -nocase "guestnick-msgmethod" $flags]} {
- if {![string equal -nocase "notice" $type] && ![string equal -nocase "privmsg" $type] && ![string equal -nocase "chan" $type]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "guestnick"]
- if {$choption == "0"} { return }
- }
- }
- if {[string match -nocase "backchan" $flags]} {
- if {![validchan $type]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- }
- if {[string equal -nocase "xbanlevel" $flags]} {
- if {![regexp {^[0-9]} $type]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- if {$type < 75 || $type > 500} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- }
- if {[string equal -nocase "vprotect" $flags]} {
- if {![string equal -nocase "on" $type] && ![string equal -nocase "off" $type]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "vprotect"]
- if {$choption == "0"} { return }
- }
- }
- if {[string equal -nocase "oprotect" $flags]} {
- if {![string equal -nocase "on" $type] && ![string equal -nocase "off" $type]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "oprotect"]
- if {$choption == "0"} { return }
- }
- }
- if {[string equal -nocase "clonescan-action" $flags]} {
- if {![string equal -nocase "message" $type] && ![string equal -nocase "ban" $type]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "clonescan"]
- if {$choption == "0"} { return }
- }
- }
- if {[string equal -nocase "lang" $flags]} {
- if {![file exists "$black(dirname)/BlackTools/lang/BlackTools.[string tolower $type].lang.tcl"]} {
- set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "language"]
- if {$choption == "0"} { return }
- }
- }
- set black_setting [setting:exists $flags]
- if {$black_setting == "2"} {
- set status [setting:status $chan $flags $type]
- if {$status != "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 set.3 "$flags $type"
- return
- }
- set split_flags [split $flags "-"]
- set flags_2 [lindex $split_flags 1]
- if {[string equal -nocase $flags_2 "banmethod"] || [string equal -nocase $flags "banmethod"]} {
- set validnum [check:validnum $type "banmethod" $type1 $nick $host $hand $chan $chan1]
- if {$validnum == "0"} { return }
- }
- if {[string equal -nocase $flags_2 "bantime"] || [string equal -nocase $flags "banmethod"]} {
- set return_time [time_return_minute $type]
- if {$return_time == "-1"} {
- blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- }
- }
- if {[string equal -nocase $flags_2 "banmask"] || [string equal -nocase $flags "banmask"]} {
- set validnum [check:validnum2 $type "banmask" $type1 $nick $host $hand $chan $chan1]
- if {$validnum == "0"} { return }
- }
- set encoded [join [encoding convertto utf-8 $type]]
- setting:set $chan $flags $encoded
- blacktools:tell $nick $host $hand $chan $chan1 set.8 "$flags $type"
- return
- }
- set why [catch {channel set $chan $flags $type} error]
- if {$why == "1"} { blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
- return
- } else {
- if {[string equal -nocase $flags "backchan"]} {
- if {![validchan $type]} {
- blacktools:tell $nick $host $hand $chan $chan1 set.12 $type
- return
- }
- }
- channel set $chan $flags $type ; blacktools:tell $nick $host $hand $chan $chan1 set.8 "$flags $type"
- }
- }
- }
- ################################# unset #######################################
- proc unset:process {nick host hand chan chan1 setting type} {
- global black
- set cmd_status [btcmd:status $chan $hand "unset" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$setting == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "unset"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "unset"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "unset"
- }
- }
- return
- }
-
- if {[string equal -nocase $setting "flag"]} {
- foreach f $black(extra_flag) {
- if {([string equal -nocase $f "invisible"] || [string equal -nocase $f "forward"]) && [matchattr $hand mo|M $chan] && ![matchattr $hand n]} {
- continue
- }
- unset:all $chan $f
- }
- blacktools:tell $nick $host $hand $chan $chan1 unset.4 none
- return
- }
- if {[string equal -nocase $setting "str"]} {
- foreach f $black(extra_str) {
- unset:all $chan $f
- }
- blacktools:tell $nick $host $hand $chan $chan1 unset.5 none
- return
- }
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
- set temp "$black(tempdir)/extra_temp.$timestamp"
- set black_setting [setting:exists $setting]
- if {$black_setting != "0"} {
- if {[string equal -nocase $setting "invisible"] || [string equal -nocase $setting "forward"] && ![matchattr $hand n]} {
- blacktools:tell $nick $host $hand $chan $chan1 unset.1 $setting
- return
- }
- if {[string equal -nocase $setting "settingsaved"]} {
- blacktools:tell $nick $host $hand $chan $chan1 unset.1 $setting
- return
- }
- set status [setting:get $chan $setting]
- if {$status != "" && $status != "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 unset.2 $setting
- set file [open $black(extra_file) r]
- set tempwrite [open $temp w]
- while {[gets $file line] != -1} {
- set c [lindex [split $line] 0]
- set gettype [lindex [split $line] 1]
- set comp [lindex [split $line] 2]
- if {$black_setting == "1"} {
- set comp [string map {
- "+" ""
- "-" ""} $comp]
- }
- if {[string equal -nocase $c $chan] && [string equal -nocase $gettype "XTRA"] && [string equal -nocase $comp $setting]} {
- continue
- } else {
- puts $tempwrite $line
- }
- }
- close $tempwrite
- close $file
- file rename -force $temp $black(extra_file)
-
- if {[string equal -nocase $setting "clonescan-scantime"]} {
- if {[info exists black(clonescan:counter:$chan)]} {
- unset black(clonescan:counter:$chan)
- }
- if {[info exists black(clonescan:$chan:timer_start)]} {
- set black(clonescan:$chan:timer_start) 0
- }
- }
- if {[string equal -nocase $setting "anunt-showtime"]} {
- if {[info exists black(anunt:counter:$chan)]} {
- unset black(anunt:counter:$chan)
- }
- if {[info exists black(anunt:$chan:timer_start)]} {
- set black(anunt:$chan:timer_start) 0
- }
- }
- if {[string equal -nocase $setting "quote-showtime"]} {
- if {[info exists black(quote:counter:$chan)]} {
- unset black(quote:counter:$chan)
- }
- if {[info exists black(quote:$chan:timer_start)]} {
- set black(quote:$chan:timer_start) 0
- }
- }
- if {[string equal -nocase $setting "badchan-scantime"]} {
- if {[info exists black(badchan:counter:$chan)]} {
- unset black(badchan:counter:$chan)
- }
- if {[info exists black(badchan:$chan:timer_start)]} {
- set black(badchan:$chan:timer_start) 0
- }
- }
- if {[string equal -nocase $setting "idle-scantime"]} {
- if {[info exists black(idle:counter:$chan)]} {
- unset black(idle:counter:$chan)
- }
- if {[info exists black(idle:$chan:timer_start)]} {
- set black(idle:$chan:timer_start) 0
- }
- }
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 unset.3 $setting
- }
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 unset.1 $setting
- }
- }
- proc unset:all {chan setting} {
- global black
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
- set temp "$black(tempdir)/extra_temp.$timestamp"
- set file [open $black(extra_file) r]
- set tempwrite [open $temp w]
- while {[gets $file line] != -1} {
- set c [lindex [split $line] 0]
- set gettype [lindex [split $line] 1]
- set comp [lindex [split $line] 2]
- if {[regexp {^[+-]} $comp]} {
- set comp [string map {
- "+" ""
- "-" ""} $comp]
- }
- if {[string equal -nocase $c $chan] && [string equal -nocase $gettype "XTRA"] && [string equal -nocase $comp $setting]} {
- continue
- } else {
- puts $tempwrite $line
- }
- }
- close $tempwrite
- close $file
- file rename -force $temp $black(extra_file)
- }
- proc check:validnum {num flags type1 nick host hand chan chan1} {
- global black
- if {![regexp {^[0-9]} $num]} {
- if {$type1 == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
- }
- if {$type1 == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
- }
- return 0
- }
- if {($num < 1) || ($num > 7)} {
- if {$type1 == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
- }
- if {$type1 == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
- }
- return 0
- }
- return 1
- }
- proc check:validnum2 {num flags type1 nick host hand chan chan1} {
- global black
- if {![regexp {^[0-9]} $num]} {
- if {$type1 == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
- }
- if {$type1 == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
- }
- return 0
- }
- if {($num < 1) || ($num > 5)} {
- if {$type1 == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
- }
- if {$type1 == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
- }
- return 0
- }
- return 1
- }
- ############################### ignore ######################################
- proc ignore:process {nick host hand chan chan1 what mask time reason type} {
- global botnick black
- set cmd_status [btcmd:status $chan $hand "ignore" 0]
- set show_mask $mask
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$what == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
- }
- }
- }
- switch -exact -- [string tolower $what] {
- list {
- if {[llength [ignorelist]] == "0"} { blacktools:tell $nick $host $hand $chan $chan1 ignore.3 none
- return
- }
- foreach ig [ignorelist] {
- set hostig [lindex $ig 0]
- set byig [lindex $ig 4]
- set bytime [lindex $ig 2]
- set reasig [lindex $ig 1]
- if {$bytime != "0"} {
- set bytime [clock format $bytime -format %D-%H:%M:%S]
- } else { set bytime "-"}
- blacktools:tell $nick $host $hand $chan $chan1 ignore.4 "$hostig $byig $bytime [join $reasig]"
- }
- }
- add {
- if {$mask == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
- }
- }
- return
- }
- if {[isignore $mask]} {
- blacktools:tell $nick $host $hand $chan $chan1 ignore.5 $show_mask
- return
- }
- if {![regexp {[!]} $mask]} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
- }
- }
- return
- }
- set check_ignore [ignore:stop $mask]
- if {$check_ignore != ""} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.validuser $check_ignore
- return
- }
- if {![regexp {^[0-9]} $time]} {
- set time $black(ignore:default_time)
- }
- set ignore_time [time_return_minute $time]
- if {$reason == ""} { set reason "N/A" }
- newignore $mask $hand $reason $ignore_time
- blacktools:tell $nick $host $hand $chan $chan1 ignore.6 "$show_mask $time $reason"
- }
- del {
- if {$mask == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
- }
- }
- return
- }
- if {[isignore $mask]} {
- killignore $mask
- } else { blacktools:tell $nick $host $hand $chan $chan1 ignore.8 $show_mask
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 ignore.9 $show_mask
- }
- default {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
- }
- }
- }
- }
- }
- proc ignore:stop {host} {
- global black
- set finduser ""
- if {[userlist] != ""} {
- foreach usr [userlist] {
- set hst [getuser $usr hosts]
- foreach hhost $hst {
- if {[string match -nocase $host $hhost] || [string match -nocase $hhost $host]} {
- set finduser $usr
- }
- }
- }
- }
- return $finduser
- }
- ################################# show ################################
- proc show:process {nick host hand chan chan1 wich type} {
- global black botnick
- set cmd_status [btcmd:status $chan $hand "show" 0]
- if {$cmd_status == "1"} {
- return
- }
- set getlang [string tolower [setting:get $chan lang]]
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {$wich == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "show"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "show"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "show"
- }
- }
- return 0
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- set setting_exists [setting:exists $wich]
- if {$setting_exists == "0"} {
- set why [catch {channel get $chan $wich} error]
- if {$why == "1"} { blacktools:tell $nick $host $hand $chan $chan1 show.5 $wich
- return
- } else {
- set replyinfo [channel get $chan $wich]
- if {($replyinfo != "") && ($replyinfo == "1")} {
- blacktools:tell $nick $host $hand $chan $chan1 show.7 "$wich"
- return
- }
- if {($replyinfo != "") && ($replyinfo == "0")} {
- blacktools:tell $nick $host $hand $chan $chan1 show.8 "$wich"
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 show.6 "$wich $replyinfo"
- }
- return
- }
- set replyinfo [setting:get $chan $wich]
- if {$setting_exists == "1"} {
- if {([string equal -nocase $wich "invisible"] || [string equal -nocase $wich "forward"]) && ![matchattr $hand n]} {
- blacktools:tell $nick $host $hand $chan $chan1 show.5 $wich
- return
- }
-
- if {[regexp {^[1]} $replyinfo]} {
- blacktools:tell $nick $host $hand $chan $chan1 show.7 $wich
- return
- }
- if {[regexp {^[0]} $replyinfo]} {
- blacktools:tell $nick $host $hand $chan $chan1 show.8 $wich
- return
- }
- if {($replyinfo == "") && [string equal -nocase $wich "oprotect"] || [string equal -nocase $wich "vprotect"] || [string equal -nocase $wich "hoprotect"]} {
- blacktools:tell $nick $host $hand $chan $chan1 show.7 $wich
- return
- }
- if {$replyinfo == ""} {
- blacktools:tell $nick $host $hand $chan $chan1 show.8 $wich
- }
- return
- }
- set split_wich [split $wich "-"]
- set name [lindex $split_wich 0]
- if {$replyinfo == ""} {
- switch -exact -- [string tolower $wich] {
- badnick-bmethod {
- set replyinfo $black(badnbanmethod)
- }
- voiceme-showtime {
- set replyinfo $black(voiceme:msgtime)
- }
- quote-showtime {
- set replyinfo $black(quote:msgtime)
- }
- anunt-showtime {
- set replyinfo $black(anunttime)
- }
- quitpartmsgflood-char {
- set replyinfo $black(badquitpartmsgchar)
- }
- repetitivechars-char {
- set replyinfo $black(repetitivechars:num)
- }
- antispam-scantime {
- set replyinfo $black(spamcycle)
- }
- clonescan-scantime {
- set replyinfo $black(clonescantime)
- }
- badchan-scantime {
- set replyinfo $black(badchan:scantime)
- }
- badchan-floodcontrol {
- set replyinfo $black(badchan:join:seconds)
- }
- idle-scantime {
- set replyinfo $black(idleinterval)
- }
- lang {
- set replyinfo $black(default_lang)
- }
- greet-method {
- set replyinfo $black(greet:method)
- }
- leave-method {
- set replyinfo $black(leave:method)
- }
- backchan {
- set replyinfo $black(say.$getlang.gl.noset)
- }
- url {
- set replyinfo $black(say.$getlang.gl.noset)
- }
- idlehalfopmax {
- set replyinfo $black(idlehalfopmax)
- }
- nickflood-repeat {
- set replyinfo $black(nickfloodrepeats)
- }
- w-message {
- set replyinfo $black(say.$getlang.w.6)
- }
- antilongtextmax {
- set replyinfo $black(longchar)
- }
- joinflood {
- set replyinfo $black(joinflood:protect)
- }
- antijoinflood-userset {
- set replyinfo $black(antijoinflood_user_joins)
- }
- chanflood {
- set replyinfo $black(antichanfloodrepeats)
- }
- idleopmax {
- set replyinfo $black(idleopmax)
- }
- idlevoicemax {
- set replyinfo $black(idlevoicemax)
- }
- expirebans {
- set replyinfo $black(default:bantime)
- }
- antirepeat-setting {
- set replyinfo $black(antirepeat:repeats)
- }
- gag-reason {
- set replyinfo $black(say.$getlang.gag.6)
- }
- w-reason {
- set len [llength $black(say.$getlang.w.5)]
- set random [expr int(rand()*$len)]
- set reply [lindex $black(say.$getlang.w.5) $random]
- set replyinfo $reply
- }
- k-reason {
- set len [llength $black(say.$getlang.k.5)]
- set random [expr int(rand()*$len)]
- set reply [lindex $black(say.$getlang.k.5) $random]
- set replyinfo $reply
- }
- b-reason {
- set len [llength $black(say.$getlang.b.5)]
- set random [expr int(rand()*$len)]
- set reply [lindex $black(say.$getlang.b.5) $random]
- set replyinfo $reply
- }
- badchan-bmethod {
- set replyinfo $black(badcbanmethod)
- }
- d-bantime {
- set replyinfo $black(dbtime)
- }
- antispam-message {
- set replyinfo $black(say.$getlang.antispam.2)
- }
- limit-default {
- set replyinfo $black(limit:default)
- }
- clonescan-maxclone {
- set replyinfo $black(maxclone)
- }
- clonescan-action {
- set replyinfo "message"
- }
- guestnick-message {
- set replyinfo $black(say.$getlang.guestnick.10)
- }
- guestnick-msgmethod {
- set replyinfo $black(guestnick:msgmethod)
- }
- voiceonmsg-idletime {
- set replyinfo $black(voiceonmsg:idletime)
- }
- voiceonmsg-linenum {
- set replyinfo $black(voiceonmsg:linenum)
- }
- xbantime {
- set replyinfo $black(chanserv:bantime)
- }
- xbanlevel {
- set replyinfo $black(chanserv:banlevel)
- }
- default {
- set replyinfo [show:details $wich $name $setting_exists $chan ""]
- }
- }
- } else {
- set replyinfo [show:details $wich $name $setting_exists $chan $replyinfo]
- }
- set remain_timer [show:getscantime:remain $wich $chan]
- if {$remain_timer == "-1"} {
- blacktools:tell $nick $host $hand $chan $chan1 show.6 "$wich [join $replyinfo]"
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 show.4 "$wich [join $replyinfo] $remain_timer"
- }
- }
- proc show:getscantime:remain {setting chan} {
- global black
- set remain ""
- if {[string equal -nocase $setting "badchan-floodcontrol"]} {
- return -1
- }
- set mod [split $setting "-"]
- set mod [lindex $mod 0]
- if {[info exists black($mod:$chan:timer_start)] && [info exists black($mod:counter:$chan)]} {
- set remain [expr $black($mod:$chan:timer_start) - $black($mod:counter:$chan)]
- }
- if {$remain == ""} {
- return -1
- } else { return $remain }
- }
- proc show:details {wich name setting_exists chan set} {
- global black
- set getlang [string tolower [setting:get $chan lang]]
- set cmds "dr vr troll bot n id spam bw black stick d next badchan spam"
- set replyinfo ""
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- if {[string equal -nocase $wich "$name-banmethod"]} {
- if {$set == ""} {
- set replyinfo [show:getbanmethod $black($name:banmethod)]
- } else {
- set replyinfo [show:getbanmethod $set]
- }
- }
- if {[string equal -nocase $wich "$name-banmask"]} {
- if {$set == ""} {
- set replyinfo [show:getbanmask $black($name:banmask)]
- } else {
- set replyinfo [show:getbanmask $set]
- }
- }
- if {$setting_exists == "2"} {
- if {[string equal -nocase $wich "$name-bantime"]} {
- if {$set == ""} {
- set replyinfo $black($name:bantime)
- } else {
- set replyinfo $set
- }
- }
- }
- if {$setting_exists == "2"} {
- if {[string equal -nocase $wich "$name-warn"]} {
- if {$set == ""} {
- set replyinfo $black(say.$getlang.$name.2)
- } else {
- set replyinfo $set
- }
- }
- }
- if {$setting_exists == "2"} {
- if {[string equal -nocase $wich "$name-reason"] && [lsearch -exact [string tolower $cmds] [string tolower $name]] > -1} {
- if {$set == ""} {
- set replyinfo $black(say.$getlang.$name.5)
- } else {
- set replyinfo $set
- }
- }
- }
- if {$setting_exists == "2" && $replyinfo == ""} {
- if {[string equal -nocase $wich "$name-reason"]} {
- if {$set == ""} {
- set replyinfo $black(say.$getlang.$name.1)
- } else {
- set replyinfo $set
- }
- }
- }
- if {$replyinfo == ""} {
- set replyinfo $set
- }
- return $replyinfo
- }
- proc show:getbanmask {num} {
- global black
- switch $num {
- 1 {
- return "#1 - *!*@host"
- }
- 2 {
- return "#2 - *!user@host"
- }
- 3 {
- return "#3 - nick!user@host"
- }
- 4 {
- return "#4 - nick!*@*"
- }
- 5 {
- return "#5 - *!user@*"
- }
- }
- }
- proc show:getbanmethod {num} {
- global black
- switch $num {
- 1 {
- return "#1 - warn"
- }
-
- 2 {
- return "#2 - kick"
- }
-
- 3 {
- return "#3 - ban"
- }
-
- 4 {
- return "#4 - warn -> kick"
- }
-
- 5 {
- return "#5 - warn -> kick -> ban"
- }
-
- 6 {
- return "#6 - kick -> ban"
- }
- 7 {
- return "#7 - warn -> ban"
- }
- }
- }
- ############################## stats ##################################
- proc stats:process {nick host hand chan chan1 user option type} {
- global botnick black timezone
- set cmd_status [btcmd:status $chan $hand "stats" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set handle ""
- set show_user $user
- set validuser 0
- set mask ""
- if {$user == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "stats"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "stats"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "stats"
- }
- }
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {[validuser $user]} {
- set validuser 1
- } else {
- set handle [nick2hand $user]
- if {[validuser $handle]} {
- set user $handle
- set validuser 1
- }
- }
- if {$validuser == "0"} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.usernotexist $user
- return
- }
- switch [string tolower $option] {
- reset {
- if {[matchattr $hand nmo|M]} {
- set reseted 0
- set cmds_today [getuser $user XTRA CMD_STATS_TODAY($chan)]
- set cmds_total [getuser $user XTRA CMD_STATS($chan)]
- if {$cmds_today != ""} {
- set reseted 1
- setuser $user XTRA CMD_STATS_TODAY($chan)
- }
- if {$cmds_total != ""} {
- set reseted 1
- setuser $user XTRA CMD_STATS($chan)
- }
- if {$reseted == "1"} {
- blacktools:tell $nick $host $hand $chan $chan1 stats.5 $user
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 stats.1 $user
- }
- }
- }
- total {
- stats:process:show $nick $host $hand $chan $chan1 $user "CMD_STATS($chan)"
- }
- default {
- stats:process:show $nick $host $hand $chan $chan1 $user "CMD_STATS_TODAY($chan)"
- }
- }
- }
- proc stats:process:show {nick host hand chan chan1 user option} {
- global black lastbind
- set cmds [getuser $user XTRA $option]
- set stats ""
- set total 0
- set total_k 0
- set cmds_gl ""
- if {[matchattr $hand nmo]} {
- set cmds_gl [getuser $user XTRA BANS(GLOBAL)]
- if {$cmds_gl == ""} {set cmds_gl 0 }
- }
-
- if {$cmds == ""} {
- blacktools:tell $nick $host $hand $chan $chan1 stats.1 $user
- return
- }
- foreach stat $cmds {
- if {$stat != ""} {
- set split_stat [split $stat ":"]
- set cmd [lindex $split_stat 0]
- set num [lindex $split_stat 1]
- if {[string equal -nocase "k" $cmd] || [string equal -nocase "w" $cmd]} {
- set total_k [expr $total_k + $num]
- } else {
- set total [expr $total + $num]
- }
- lappend stats "[black:color "1" $hand $cmd] ([black:color "2" $hand $num])"
- }
- }
- if {[matchattr $hand nmo]} {
- if {[string equal -nocase "CMD_STATS_TODAY($chan)" $option]} {
- blacktools:tell $nick $host $hand $chan $chan1 stats.2 "$user $total $total_k [join $stats " ; "]"
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 stats.4 "$user $total $cmds_gl $total_k [join $stats " ; "]"
- }
- } else {
- if {[string equal -nocase "CMD_STATS_TODAY($chan)" $option]} {
- blacktools:tell $nick $host $hand $chan $chan1 stats.2 "$user $total $total_k [join $stats " ; "]"
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 stats.3 "$user $total $total_k [join $stats " ; "]"
- }
- }
- }
- ################################# r #######################################
- proc topic:refresh {nick host hand chan chan1 arg} {
- global black lastbind botnick
- set cmd_status [btcmd:status $chan $hand "r" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- if {![validchan $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {![onchan $botnick $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
- return
- }
- if {![botisop $chan]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- set chantopic [topic $chan]
- set getlang [string tolower [setting:get $chan lang]]
- if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
- if {$chantopic != ""} {
- set top "$black(say.$getlang.r.1)"
- set len [llength $top]
- set random [expr int(rand()*$len)]
- set top [lindex $top $random]
- set text [black:color:set "" $top]
- set reply [join $text]
- putserv "TOPIC $chan :$reply"
- putserv "TOPIC $chan :$chantopic"
- } else {
- blacktools:tell $nick $host $hand $chan $chan1 r.2 none
- }
- }
- ############################### omsg ###################################
- proc omsg:process {nick host hand chan chan1 who msg type} {
- global black
- set cmd_status [btcmd:status $chan $hand "omsg" 0]
- if {$cmd_status == "1"} {
- return
- }
- if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
- return
- }
- if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
- return
- }
- set chans ""
- if {$who == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "omsg"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "omsg"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "omsg"
- }
- }
- return
- }
- if {$msg == ""} {
- switch $type {
- 0 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "omsg"
- }
- 1 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "omsg"
- }
- 2 {
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "omsg"
- }
- }
- return
- }
- if {[string equal -nocase $who "all"]} {
- foreach c [channels] {
- if {![setting:get $c invisible]} {
- if {[matchattr $hand $black(accessflags) $c]} {
- if {[botisop $c]} {
- lappend chans $c
- }
- }
- }
- }
- if {$chans == ""} {
- return
- }
- blacktools:tell $nick $host $hand $chan $chan1 omsg.1 [join $chans ", "]
- omsg:act $hand $chans 0 $msg
- return
- }
- if {![validchan $who]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
- return
- }
- if {[matchattr $hand $black(accessflags) $who]} {
- if {![botisop $who]} {
- blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
- return
- }
- putserv "NOTICE @$who :\[BT\] ($hand) $msg"
- blacktools:tell $nick $host $hand $chan $chan1 omsg.1 $who
- }
- }
- proc omsg:act {hand chans number msg} {
- global black
- set chan [lindex $chans $number]
- putserv "NOTICE @$chan :\[BT\] ($hand) $msg"
- set number [expr $number + 1]
- if {[lindex $chans $number] != ""} {
- utimer 2 [list omsg:act $hand $chans $number $msg]
- }
- }
- ##############
- #########################################################################
- ## END ##
- #########################################################################
|