[Twitch]follower script help - 28/09/16 09:26 AM
this is script doesnt work what is wrong?
Code:
ON *:PART:#: { if ($nick == $me) { unset %stream_auto_ [ $+ [ $chan ] ] | .timer[FOLLOWERS_CHECK_ [ $+ [ $chan ] ] off } } ON *:KICK:#: { if ($knick == $me) { unset %stream_auto_ [ $+ [ $chan ] ] | .timer[FOLLOWERS_CHECK_ [ $+ [ $chan ] ] off } } ON *:JOIN:#: { if ($nick == $me) && (%stream_chan_ [ $+ [ $chan ] ]) && (%stream_auto_ [ $+ [ $chan ] ]) { .timer[FOLLOWERS_CHECK_ $+ $chan $+ ] 0 5 twitch_check_new $chan %stream_chan_ [ $+ [ $chan ] ] } } ON !*:TEXT:!*:#: { if ($1 == !autofollow) { if ($nick !isop $chan) { .msg $chan ( $+ $nick $+ ): Error, You are NOT an channel operator! | return } if (!$2) { .msg $chan ( $+ $nick $+ ): Error, try again and use ON or OFF options! | return } var %opt = $2 if (%opt !== ON) && (%opt !== OFF) { .msg $chan ( $+ $nick $+ ): Error, Incorrect parameters, try again and use ONLY the options ON or OFF. | return } if (%opt == ON) { if (!%stream_chan_ [ $+ [ $chan ] ]) { .msg $chan ( $+ $nick $+ ): Error, There is NOT any $qt(Stream Channel) set, Please use the !SetStreamChan command to set one! | return } if (%stream_auto_ [ $+ [ $chan ] ]) { .msg $chan ( $+ $nick $+ ): Error, The AUTO-FOLLOW-WELCOME module is already running! } else { set %stream_auto_ [ $+ [ $chan ] ] $ctime .timer[FOLLOWERS_CHECK_ $+ $chan $+ ] 0 5 twitch_check_new $chan %stream_chan_ [ $+ [ $chan ] ] .msg $chan ( $+ $nick $+ ): The AUTO-FOLLOW-WELCOME module has been enabled. - (Twitch Channel: $+ %stream_chan_ [ $+ [ $chan ] ] $+ ) } } if (%opt == OFF) { if (!%stream_chan_ [ $+ [ $chan ] ]) { .msg $chan ( $+ $nick $+ ): Error, There is NOT any $qt(Stream Channel) set, Please use the !SetStreamChan command to set one! | return } if (!%stream_auto_ [ $+ [ $chan ] ]) { .msg $chan ( $+ $nick $+ ): Error, The AUTO-FOLLOW-WELCOME module is already NOT running! } else { .timer[FOLLOWERS_CHECK_ $+ $chan $+ ] off unset %stream_auto_ [ $+ [ $chan ] ] .msg $chan ( $+ $nick $+ ): The AUTO-FOLLOW-WELCOME module has been disabled. - (Twitch Channel: $+ %stream_chan_ [ $+ [ $chan ] ] $+ ) } } } if ($1 == !setstreamchan) { if ($nick !isop $chan) { .msg $chan ( $+ $nick $+ ): Error, You are NOT an channel operator! | return } if (!$2) { .msg $chan ( $+ $nick $+ ): Error, Not enough parameters, try again and enter the Twitch Channel correctly! | return } if (%stream_auto_ [ $+ [ $chan ] ]) { .msg $chan ( $+ $nick $+ ): Error, You must first disable the AUTO-FOLLOW-MESSAGE module and then change the stream channel! | return } set %stream_chan_ [ $+ [ $chan ] ] $2 .msg $chan ( $+ $nick $+ ): The Twitch Channel has been set, now use !AutoFollow command to enable/disable the AUTO-FOLLOW-WELCOME module. } if ($1 == !streamchan) { if ($nick !isop $chan) { .msg $chan ( $+ $nick $+ ): Error, You are NOT an channel operator! | return } if (!%stream_chan_ [ $+ [ $chan ] ]) { .msg $chan ( $+ $nick $+ ): Error, There is NOT any Twitch Channel has been set! | return } .msg $chan ( $+ $nick $+ ): The $chan Twitch Stream Channel is now: $+ %stream_chan_ [ $+ [ $chan ] ] $+ } if ($1 == !followed) { if ($nick !isop $chan) { .msg $chan ( $+ $nick $+ ): Error, You are NOT an channel operator! | return } if (!$2) { .msg $chan ( $+ $nick $+ ): Error, Not enough parameters, try again and enter the nickname correctly! | return } var %stc = %stream_chan_ [ $+ [ $chan ] ] var %h = ls_followers_ [ $+ [ %stc ] $+ ] _ [ $+ [ $chan ] ] if (!$hget(%h)) { .msg $chan ( $+ $nick $+ ): There is NOT any nickname yet on my database! | return } if (!$hfind(%h,$2)) { .msg $chan ( $+ $nick $+ ): Error, Cannot find, The $qt( $+ $2 $+ ) nickname is NOT on my database! | return } var %fl = $hget(%h,$2) var %timeago = $_timeago($calc($ctime - %fl)).all .msg $chan ( $+ $nick $+ ): The $qt( $+ $2 $+ ) nickname followed the Twitch Channel on $+ $date(%fl,ddd ddoo mmm yyyy HH:nn:ss) $+ $iif(%timeago,( $+ $v1 $+ )) } if ($1 == !lastfollow) { if ($nick !isop $chan) { .msg $chan ( $+ $nick $+ ): Error, You are NOT an channel operator! | return } var %stc = %stream_chan_ [ $+ [ $chan ] ] var %h = ls_followers_last_ [ $+ [ %stc ] $+ ] _ [ $+ [ $chan ] ] if (!$hget(%h)) { .msg $chan ( $+ $nick $+ ): There is NOT any nickname yet on my database! | return } if (!$hget(%h,1).item) { .msg $chan ( $+ $nick $+ ): Error, Cannot find, The last followed nickname cannot be found on my database! | return } var %fl = $hget(%h,1).data var %fln = $hget(%h,1).item var %timeago = $_timeago($calc($ctime - %fl)).all .msg $chan ( $+ $nick $+ ): The last follower nickname is $qt( $+ %fln $+ ) followed the Twitch Channel on $+ $date(%fl,ddd ddoo mmm yyyy HH:nn:ss) $+ $iif(%timeago,( $+ $v1 $+ )) } } alias twitch_check_new { if (!$1-) { return } if (!%stream_auto_ [ $+ [ $1 ] ]) { .timer[FOLLOWERS_CHECK_ $+ $1 $+ ] off | return } if ($me !ison $1) { .timer[FOLLOWERS_CHECK_ $+ $1 $+ ] off | return } var %u = https://api.twitch.tv/kraken/channels/ $+ $2 $+ /follows?limit=1&nocache= $+ $ticks var %v = twc_ $+ $ticks JSONOpen -ud %v %u if (%JSONError) { goto end | return } var %followed = $json(%v,follows,0,created_at) if (%followed) { var %followed = $replace($remove(%followed,$chr(122)),$chr(116),$chr(32)) var %ctime = $ctime(%followed) var %followed = $date(%ctime,ddd ddoo mmm yyyy HH:nn:ss) var %followed_ago = $_timeago($calc($ctime - %ctime)).all } var %type = $json(%v,follows,0,user,type) var %name = $json(%v,follows,0,user,display_name) if (!%name) { var %name = $json(%v,follows,0,user,name) } if (!%name) { goto end | return } var %uu = https://api.twitch.tv/kraken/streams/ $+ $2 var %vv = twl_ $+ $ticks JSONOpen -ud %vv %uu if (%JSONError) { goto end | return } if (!$hget(ls_followers_ [ $+ [ $2 ] $+ ] _ [ $+ [ $1 ] ])) { hmake ls_followers_ [ $+ [ $2 ] $+ ] _ [ $+ [ $1 ] ] 500 } if ($hfind(ls_followers_ [ $+ [ $2 ] $+ ] _ [ $+ [ $1 ] ],%name)) { goto end | return } hadd -m ls_followers_ [ $+ [ $2 ] $+ ] _ [ $+ [ $1 ] ] %name $ctime(%followed) if ($hget(ls_followers_last_ [ $+ [ $2 ] $+ ] _ [ $+ [ $1 ] ])) { hfree $v1 } hadd -m ls_followers_last_ [ $+ [ $2 ] $+ ] _ [ $+ [ $1 ] ] %name $ctime(%followed) .msg $1 $+ %name $+ Kanalı takip ediyor.Aramıza Hoşgeldin bakiyim! :end JSONClose %v JSONClose %vv } alias _timeago { if (!$1) { return 0 } if ($1) && ($1 !isnum) { return 0 } if ($prop == all) { var %s = $nduration($1) var %s = $replacex(%s,wks,$chr(32) weeks.,wk,$chr(32) week.) var %s = $replacex(%s,days,$chr(32) days.,day,$chr(32) day.) if (*min* iswm %s) { var %s = $replacex(%s,hrs,$chr(32) hours.,hr,$chr(32) hour.) } if (*min* !iswm %s) { var %s = $replacex(%s,hrs,$chr(32) hours,hr,$chr(32) hour) } if (*sec* iswm %s) { var %s = $replacex(%s,mins,$chr(32) minutes.,min,$chr(32) minute.) } if (*sec* !iswm %s) { var %s = $replacex(%s,mins,$chr(32) minutes,min,$chr(32) minute) } var %s = $replacex(%s,secs,$chr(32) seconds,sec,$chr(32) second) var %s = $replace(%s,$chr(46),$chr(44)) return $iif(%s,%s ago,0) } if ($1 <= 59) { return $1 $iif($1 == 1,second,seconds) ago } if (($1 <= 3599) && ($1 > 59)) { return $floor($calc($1 / 60)) $iif($floor($calc($1 / 60)) == 1,minute,minutes) ago } if (($1 <= 86399) && ($1 > 3599)) { return $round($calc($1 / 3600),0) $iif($round($calc($1 / 3600),0) == 1,hour,hours) ago } if (($1 <= 2592000) && ($1 > 86399)) { return $floor($calc($1 / 86400)) $iif($floor($calc($1 / 86400)) > 1,days,day) $+ , $round($calc($calc($1 - $calc($floor($calc($1 / 86400))*86400)) / 3600),0) $iif($round($calc($calc($1 - $calc($floor($calc($1 / 86400))*86400)) / 3600),0) > 1,hours,hour) ago } if (($1 <= 31540000) && ($1 > 2592000)) { return $floor($calc($1 / 2592000)) $iif($floor($calc($1 / 2592000)) > 1,months,month) $+ , $round($calc($calc($1 - $calc($floor($calc($1 / 2592000))*2592000)) / 86400),0) $iif($round($calc($calc($1 - $calc($floor($calc($1 / 2592000))*2592000)) / 86400),0) > 1,days,day) ago } if ($1 > 31104000) { return $floor($calc($1 / 31104000)) $iif($floor($calc($1 / 31104000)) > 1,years,year) $+ , $round($calc($calc($1 - $calc($floor($calc($1 / 31104000))*31104000)) / 2592000),0) $iif($round($calc($calc($1 - $calc($floor($calc($1 / 31104000))*31104000)) / 2592000),0) > 1,months,month) ago } } alias JSONOpen { var %init = function init(a,b){errortext="";data="";url=b ? b : "";method="GET";headers=[];parsedJSON={};status=a;fso=new ActiveXObject("Scripting.FileSystemObject")} var %read = function readFile(filename){var ado=new ActiveXObject("ADODB.Stream");ado.CharSet="utf-8";ado.Open();ado.LoadFromFile(filename);if(!ado.EOF){data=ado.ReadText();}ado.close()} var %json = "object"!==typeof JSON&&(JSON={});(function(){if(!JSON.hasOwnProperty("parse")||!JSON.parse)JSON.parse=function(t){if(/^[\],:{}\s]*$/.test((t=(String(t)).replace(/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})).replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){return eval('('+t+')')}throw new SyntaxError('parse')}}()) var %xhr = function xhr(){var a,b=['MSXML2.SERVERXMLHTTP.6.0','MSXML2.SERVERXMLHTTP.3.0','MSXML2.SERVERXMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','Microsoft.XMLHTTP'],c;for(a=0;a<b.length;a++){try{c=xhrObj=new ActiveXObject(b[a]);break}catch(e){}}if(typeof c==="undefined"){status="error";errortext="Unable to locate an XMLHTTP object for use"}else{c.open(method,url,false);for(a=0;a<headers.length;a++){try{c.setRequestHeader(headers[a][0],headers[a][1])}catch(ee){status="error";errortext=ee.message; return}}c.send(data);if(c.status!==200){status="error";errortext="Unable to retrieve data - Server Error: " + c.status}else{status="Parsed";try{parsedJSON=JSON.parse(c.responseText)}catch(ee){status="error";errortext="Unable to parse Retrieved Data"}}}} var %switches = - var %com var %error var %close = $false var %file var %rem var %i if (-* iswm $1) { %switches = $1 tokenize 32 $2- } var %com = JSONHandler:: $+ $1 if (!$regex(%switches, /^-[ufbwd]*$/)) { %error = Invalid switches specified } elseif ($regex(%switches, /([ufbwd])\1/)) { %error = Duplicate switch specified ( $+ $regml(1) $+ ) } elseif ($regex(%switches, /([ufb])/g) > 1) { %error = Conflicting switches specified (- $+ $regml(1) $+ , - $+ $regml(2) $+ $iif($regml(3), $chr(44) - $+ $v1) $+ ) } elseif (w isin %switches && u !isin %switches) { %error = Invalid switch (-w is only for use with -u) } elseif ($0 < 2) { %error = Required parameters missing } elseif (!$regex($1,/^[a-z\d_.-]+$/i)) { %error = Invalid name specified (Can only contant letters, numbers, _, ., and -) } elseif ($com(%com)) { %error = Specified name in use } elseif (u isin %switches && $0 > 2) { %error = Invalid URL specified. (Contains Spaces: $2-) } elseif (f isin %switches && !$isfile($2-)) { %error = File not found: $2- } elseif (b isin %switches && &* !iswm $2) { %error = Invalid binary variable specified (No '&' Prefix) } elseif (b isin %switches && $0 > 2) { %error = Invalid binary variable specified (Contains Spaces: $2-) } elseif (b isin %switches && $bvar($2, 0) < 1) { %error = Invalid binary variable specified (No content) } else { %close = $true if (!$JSON::ComOpen(%com, MSScriptControl.ScriptControl) || $comerr) { %error = Unable to create an instance of MSScriptControl.ScriptControl } elseif (!$com(%com, language, 4, bstr, jscript) || $comerr) { %error = Unable to set ScriptControl's language to Javascript } elseif (!$com(%com, addcode, 1, bstr, %init) || $comerr) { %error = Unable to add init() to ScriptControl } elseif (!$com(%com, addcode, 1, bstr, %xhr) || $comerr) { %error = Unable to add xhr() to ScriptControl } elseif (!$com(%com, addcode, 1, bstr, %read) || $comerr) { %error = Unable to add readFile() to ScriptControl } elseif (!$com(%com, ExecuteStatement, 1, bstr, %JSON) || $comerr) { %error = Unable to Initalize the JSON parser object } elseif (!$com(%com, ExecuteStatement, 1, bstr, $iif(u isin %switches, $+(init,$chr(40), "XHR", $chr(44), $qt($JSON::Escape($2)), $chr(41)), $+(init,$chr(40), "Parsed", $chr(44), "", $chr(41)))) || $comerr) { %error = Unable to initalize variables for ScriptControl } elseif (u !isin %switches) { %file = $JSON::File($1) %rem = $true if (f isin %switches) { %file = $longfn($2) %rem = $false } elseif (b isin %switches) { bwrite $qt(%file) 0 -1 $2 } else { write -n $qt(%file) $2- } if (!$com(%com, ExecuteStatement, 1, bstr, $JSON::Funct(readFile, $qt($JSON::Escape(%file)))) || $comerr) { %error = Unable to read contents of data-passing file } elseif (!$com(%com, ExecuteStatement, 1, bstr, $JSON::Funct(parsedJSON=JSON.parse, data)) || $comerr) { %error = Unable to parse data into valid JSON } } elseif (w !isin %switches) { if (!$com(%com, ExecuteStatement, 1, bstr, $+(xhr,$chr(40),$chr(41))) || $comerr) { %error = Unable to start the web request for $2 } elseif (!$com(%com, eval, 1, bstr, errortext) || $com(%com).result) { %error = Unable to retrieve data $+ $iif($v1,: $v1,) } } if (d isin %switches) { $+(.timer,%com) 1 0 JSONClose $1 } } :error set -eu0 %JSONError $iif($error, $v1, %error) if (%rem && %file && $isfile(%file)) { .remove $qt(%file) } if (%JSONError && %close && $com(%com)) { set -eu0 $+(%,%com,::error) %JSONError .comclose %com } } alias JSONError { return %JSONError } alias JSONURLOption { var %com = JSONHandler:: $+ $1 var %error var %head var %value var %x = 2 if (!$com(%com)) { return } unset % [ $+ [ %com ] $+ ] ::error if ($0 < 3) { %error = Missing parameters } elseif (!$com(%com, eval, 1, bstr, status) || $com(%com).result != XHR) { %error = HTTP Request already completed or wasn't specified } elseif ($2 == method) { if (!$regex($3-, /^(?:GET|POST|PUT|DELETE)$/i)) { %error = Invalid HTTP Request method Specified: $3- } elseif (!$com(%com, ExecuteStatement, 1, bstr, method=" $+ $upper($3) $+ ") || $comerr) { %error = Unable to set HTTP Request method } } else { if (!$com(%com, ExecuteStatement, 1, bstr, $JSON::Funct(headers.push,[ $+ $qt($JSON::Escape($2)), $qt($JSON::Escape($3-)) $+ ])) || $comerr) { %error = Unable to set HTTP Header: %head $+ : $+ %value } } :error %error = $iif($error, $v1, %error) if (%error) { reseterror set -e $+(%,%com,::Error) %error } } alias JSONGet { var %switches - if (-* iswm $1) { %switches = $1 tokenize 32 $2- } var %com = JSONHandler:: $+ $1 var %file = $JSON::File($1) var %error var %rem = $true if ($com(%com)) { if ($com(%com, eval, 1, bstr, status) && $com(%com).result !== XHR) { %error = HTTP Request already completed or wasn't specified } elseif (!$regex(%switches, /^-[bf]*$/)) { %error = Invalid switches specified } elseif ($regex(%switches, /([bf])\1/)) { %error = Duplicate switch specified ( $+ $regml(1) $+ ) } elseif ($regex(%switches, /([bf])/g) > 1) { %error = Conflicting switches specified (- $+ $regml(1) $+ , - $+ $regml(2) $+ ) } elseif (b isin %switches && &* !iswm $2) { %error = Invalid binary variable specified (No '&' Prefix) } elseif (b isin %switches && $0 > 2) { %error = Invalid binary variable specified (Contains Spaces: $2-) } elseif (f isin %switches && !$isfile($2-)) { %error = File not found: $2- } else { if (b isin %switches && $bvar($2,0)) { bwrite $qt(%file) 0 -1 $2 } elseif (f isin %switches) { %file = $longfn($2-) %rem = false } elseif ($2-) { write -n $qt(%file) $2- } %file = $longfn(%file) if ($isfile(%file) && (!$com(%com, ExecuteStatement, 1, bstr, $JSON::Funct(readFile,$qt($JSON::Escape(%file)))) || $comerr)) { %error = Unable to pass data to JSON Handler } elseif (!$com(%com, ExecuteStatement, 1, bstr, xhr $+ $chr(40) $+ $chr(41)) || $comerr) { %error = Unable to retrieve data from specified URL } elseif (!$com(%com, eval, 1, bstr, errortext) || $com(%com).result) { %error = $v1 } } } :error %error = $iif($error, $v1, %error) reseterror if (%rem && $isfile(%file)) { .remove %file } if (%error) { set -eu0 $+(%,%com,::Error) %error } } alias JSON { var %com var %x = 1 var %i = 0 var %get = parsedJSON var %tok var %res var %LTLError if ($regex($1,/^\d+$/) && $0 === 1) { while ($com(%x)) { if (JSONHandler::* iswm $v1) { %com = $v2 inc %i if (%i === $1) { return $mid(%com,14-) } } inc %x } return $iif($1 == 0, %i) } elseif ($regex($1, /^JSONHandler::CHILD::([^:]+)::(.*)$/)) { %com = $regml(1) %get = $regml(2) } else { %com = JSONHandler:: $+ $1 } if ($com(%com)) { if ($0 == 1) { if ($prop == isChild) { return $iif($regex($1, /^JSONHandler::CHILD::([^:]+)::(.*)$/), $true, $false) } elseif ($prop == error || $prop === errormsg) { return $(,$+(%,%com,::error)) } elseif ($com($1)) { return $1 } } elseif (!$com(%com, eval, 1, bstr, status)) { set -eu0 $+(%,%com,::error) Unable to get status of JSON handler } elseif ($com(%com).result == error) { noop $com(%com, eval, 1, bstr, errortext) set -eu0 $+(%, %com, ::error) $com(%com).result } elseif (!$com(%com, eval, 1, bstr, status) || $com(%com).result != parsed) { set -eu0 $+(%,%com,::error) JSON Handler waiting for HTTP Request } else { %x = 2 while (%x <= $0) { %tok = $(,$ $+ %x) if (!$regex(%tok, /^\d+$/)) { %tok = $qt($replace(%tok,\,\\,",\")) } %get = $+(%get,[,%tok,]) inc %x } if (!$com(%com, eval, 1, bstr, %get) || $comerr) { set -eu0 $+(%,%com,::error) Invalid Item|index specified } else { %LTLError = $true %res = $com(%com).result %LTLError = $false if (%res == [object]) { return JSONHandler::CHILD:: $+ $1 $+ :: $+ %get } else { return %res } } } } return :error set -eu0 $+(%,%com,::error) $iif(%LTLError, Line to Long; truncated at 4000 bytes, $error) reseterror if (%LTLError) { %res = $left($com(%com).result, 4000) } } alias JSONClose { var %com = JSONHandler:: $+ $1 unset % [ $+ [ %com ] $+ ] ::* if ($com(%com)) { .comclose $v1 } if ($timer(%com)) { $+(.timer,%com) off } } alias JSONList { var %x = 1, %i = 0 while ($com(%x)) { if (JSONHandler::* iswm $v1) { inc %i echo $color(info text) -a * # $+ %i : $regsubex($v2, /^JSONHandler::/,) } inc %x } if (!%i) { echo $color(info text) -a * No active JSON handlers } } on *:Start:{ unset %JSONHandler::* } alias -l JSON::ComOpen { .comopen $1- if ($com($1) && !$comerr) { return $true } :error reseterror if ($com($1)) { .comclose $1 } } alias -l JSON::Escape { return $replace($1,\,\\,",\") } alias -l JSON::File { var %a = 1 while ($isfile($scriptdirJSON $+ $1 $+ %a $+ .json)) { inc %a } return $+($scriptdirJSON, $1, %a, .json) } alias -l JSON::Funct { var %a, %i = 1 while (%i < $0) { inc %i %a = $addtok(%a, $(, $ $+ %i), 44) } return $1 $+ ( $+ %a $+ ) }