Requested for: Draven
Contact: http://westor.ucoz.com/contact
Credits to SReject (JSON Code)
Description:
This is an giveaway module that when someone start an new giveaway with an specific word when people say this word then the user
added into the list and after giving command to end the giveaway then it will get an random winner and give to the channel also
when it gives the winner it scan if the user is following the channel or not.
Commands:
!Giveawaystart WORD = This starting the giveaway with the given word and if the user tells this word the bot will automatically add him/her into the list, the giveaway will expire after 5 mins and give the results.
ON !*:TEXT:*:#: { ; by westor 2015
if (%giveawaystart_ [ $+ [ $chan ] ]) {
if ($1 == %giveawaymsg_ [ $+ [ $chan ] ]) {
if ($read(Raffle_ $+ $chan $+ .txt,nw,$nick)) { msg # ( $+ $nick $+ ): You are already into the list! | return }
write Raffle_ $+ $chan $+ .txt $nick
msg # ( $+ $nick $+ ): You have been added to the list.
}
}
if ($1 == !giveawaystart) {
if ($nick isop #) {
if ($2) {
if (%giveawaystart_ [ $+ [ $chan ] ]) { msg # ( $+ $nick $+ ): There is an other giveaway at the moment! | return }
set -e %giveawaystart_ [ $+ [ $chan ] ] On
set -e %giveawaymsg_ [ $+ [ $chan ] ] $2
set -e %giveawaynick_ [ $+ [ $chan ] ] $nick
msg # ( $+ $nick $+ ): Giveaway started and will expire in 5 minutes, the word/phrase to join is $qt($2)
.timer[GIVEAWAY_SAY] 0 60 giveaway_say $chan
.timer[GIVEAWAY] 1 300 giveaway_end $chan
if ($isfile(Raffle_ $+ $chan $+ .txt)) { .remove $qt(Raffle_ $+ $chan $+ .txt) }
}
elseif (!$2) { msg # ( $+ $nick $+ ): Please enter a word for the giveaway trigger. }
}
elseif ($nick !isop #) { msg # ( $+ $nick $+ ): You are NOT an channel operator! }
}
}
alias giveaway_say { ; by westor 2015
if (!$1) { .timer[GIVEAWAY_SAY] off | return }
if ($me !ison $1) { .timer[GIVEAWAY_SAY] off | return }
if (!%giveawaystart_ [ $+ [ $1 ] ]) { .timer[GIVEAWAY_SAY] off | return }
var %l = $timer([GIVEAWAY]).secs
if (%l !== 0) { .msg $1 (GIVEAWAY): The GiveAway will expire in: $+ $duration(%l) $+ }
}
alias giveaway_end { ; by westor 2015
.timer[GIVEAWAY*] off
if (!$1) { return }
if (!%giveawaystart_ [ $+ [ $1 ] ]) { return }
var %user = $read(Raffle $+ _ $+ $1 $+ .txt,n)
unset %giveawaystart_ [ $+ [ $1 ] ]
unset %giveawaymsg_ [ $+ [ $1 ] ]
unset %giveawaynick_ [ $+ [ $1 ] ]
if (%user) { tw_check_follow_auto $remove($1,$chr(35)) %user $1 }
else { .msg $1 (GIVEAWAY): There is NOT any winner available. }
if ($isfile(Raffle_ $+ $1 $+ .txt)) { .remove $qt(Raffle_ $+ $1 $+ .txt) }
}
alias tw_check_follow_auto { ; by westor 2015
if (!$1) { return }
var %u = https://api.twitch.tv/kraken/users/ $+ $2 $+ /follows/channels/ $+ $1 $+ ?limit=1&nocache= $+ $ticks
var %v = twc_ $+ $ticks
JSONOpen -ud %v %u
if (%JSONError) { var %error = 1 | goto end | return }
var %fc = $json(%v,error)
if (%fc) {
var %msg = $json(%v,message)
if (is not following isin %msg) { var %status = 0 }
}
:end
var %status = $json(%v,created_at)
if (%error) { msg $3 (GIVEAWAY): Giveaway has ended, the winner is: $2 ( $+ $2 is NOT following the channel) | goto end2 }
if (!%status) { msg $3 (GIVEAWAY): Giveaway has ended, the winner is: $2 ( $+ $2 is NOT following the channel) }
elseif (%status) { msg $3 (GIVEAWAY): Giveaway has ended, the winner is: $2 ( $+ $2 is following the channel) }
:end2
JSONClose %v
}
; -----
alias JSONVersion {
if ($isid) {
return $iif($1 != short,JSONForMirc v,v) $+ 0.2.2
}
}
alias JSONError {
if ($isid) {
return %JSONError
}
}
alias JSONOpen {
if ($isid) return
unset %JSONError
debugger -i 0 Calling /JSONOpen $1-
var %switches = -, %error, %com, %file
if (-* iswm $1) {
%switches = $1
tokenize 32 $2-
}
if ($regex(%switches, ([^dbfuw\-]))) {
%error = Invalid switches specified: $regml(1)
}
elseif ($regex(%switches, ([dbfuw]).*?\1)) {
%error = Duplicate switch specified: $regml(1)
}
elseif ($regex(%switches, /([bfu])/g) > 1) {
%error = Conflicting switches: $regml(1) $+ , $regml(2)
}
elseif (u !isin %switches && w isin %switches) {
%error = -w switch can only be used with -u
}
elseif ($0 < 2) {
%error = Missing Parameters
}
elseif (!$regex($1, /^[a-z][a-z\d_.-]+$/i)) {
%error = Invalid handler name: Must start with a letter and contain only letters numbers _ . and -
}
elseif ($com(JSONHandler:: $+ $1)) {
%error = Name in use
}
elseif (b isin %switches && $0 != 2) {
%error = Invalid parameter: Binary variable names cannot contain spaces
}
elseif (b isin %switches && &* !iswm $2) {
%error = Invalid parameters: Binary variable names start with &
}
elseif (b isin %switches && !$bvar($2, 0)) {
%error = Invalid parameters: Binary variable is empty
}
elseif (f isin %switches && !$isfile($2-)) {
%error = Invalid parameters: File doesn't exist
}
elseif (f isin %switches && !$file($2-).size) {
%error = Invalid parameters: File is empty
}
elseif (u isin %switches && $0 != 2) {
%error = Invalid parameters: URLs cannot contain spaces
}
else {
.comopen JSONHandler:: $+ $1 MSScriptControl.ScriptControl
if (!$com(JSONHandler:: $+ $1) || $comerr) {
%error = Unable to create an instance of MSScriptControl.ScriptControl
}
else {
%com = JSONHandler:: $+ $1
if (!$com(%com, language, 4, bstr, jscript) || $comerr) {
%error = Unable to set ScriptControl's language to Javascript
}
elseif (!$com(%com, timeout, 4, bstr, 60000) || $comerr) {
%error = Unable to set ScriptControl's timeout to 60seconds
}
elseif (!$com(%com, ExecuteStatement, 1, bstr, $JScript) || $comerr) {
%error = Unable to add required javascript to the ScriptControl instance
}
elseif (u isincs %switches) {
if (1 OK != $jstry(%com, $jscript(urlInit), $escape($2-).quote)) {
%error = $gettok($v2, 2-, 32)
}
elseif (w !isincs %switches && 0 ?* iswm $jsTry(%com, $jscript(urlParse), status="error").withError) {
%error = $gettok($v2, 2-, 32)
}
}
elseif (f isincs %switches) {
if (1 OK != $jstry(%com, $jscript(fileParse), $escape($longfn($2-)).quote)) {
%error = $gettok($v2, 2-, 32)
}
}
elseif (b isincs %switches) {
%file = $tempfile
bwrite $qt(%file) -1 -1 $2
debugger %com Wrote $2 to $qt(%file)
if (0 ?* iswm $jstry(%com, $jscript(fileParse), $escape(%file).quote)) {
%error = $gettok($v2, 2-, 32)
}
}
else {
%file = $tempfile
write -n $qt(%file) $2-
debugger %com Wrote $2- to $qt(%file)
if (0 ?* iswm $jstry(%com, $jscript(fileParse), $escape(%file).quote)) {
%error = $gettok($v2, 2-, 32)
}
}
if (!%error) {
if (d isin %switches) {
$+(.timer, %com) -o 1 0 JSONClose $1
}
Debugger -s %com Successfully created
}
}
}
:error
%error = $iif($error, $error, %error)
reseterror
if (%file && $isfile(%file)) {
.remove $qt(%file)
debugger %com Removed $qt(%file)
}
if (%error) {
if (%com && $com(%com)) {
.comclose %com
}
set -eu0 %JSONError %error
Debugger -e 0 /JSONOpen %switches $1- --RAISED-- %error
}
}
alias JSONUrlMethod {
if ($isid) return
unset %JSONError
debugger -i 0 Calling /JSONUrlMethod $1-
var %error, %com
if ($0 < 2) {
%error = Missing parameters
}
elseif ($0 > 2) {
%error = Too many parameters specified
}
elseif (!$regex($1, /^[a-z][a-z\d_.\-]+$/i)) {
%error = Invalid handler name: Must start with a letter and contain only letters numbers _ . and -
}
elseif (!$com(JSONHandler:: $+ $1)) {
%error = Invalid handler name: JSON handler does not exist
}
elseif (!$regex($2, /^(?:GET|POST|PUT|DEL)$/i)) {
%error = Invalid request method: Must be GET, POST, PUT, or DEL
}
else {
var %com = JSONHandler:: $+ $1
if (1 OK != $jsTry(%com, $JScript(UrlMethod), status="error", $qt($upper($2))).withError) {
%error = $gettok($v2, 2-, 32)
}
else {
Debugger -s $+(%com,>JSONUrlMethod) Method set to $upper($2)
}
}
:error
%error = $iif($error, $v1, %error)
reseterror
if (%error) {
set -eu0 %JSONError %error
if (%com) set -eu0 % [ $+ [ %com ] $+ ] ::Error %error
Debugger -e $iif(%com, $v1, 0) /JSONUrlMethod %switches $1- --RAISED-- %error
}
}
alias JSONUrlHeader {
if ($isid) return
unset %JSONError
debugger -i 0 Calling /JSONUrlHeader $1-
var %error, %com
if ($0 < 3) {
%error = Missing parameters
}
elseif (!$regex($1, /^[a-z][a-z\d_.\-]+$/i)) {
%error = Invalid handler name: Must start with a letter and contain only letters numbers _ . and -
}
elseif (!$com(JSONHandler:: $+ $1)) {
%error = Invalid handler name: JSON handler does not exist
}
elseif (!$regex($2, /^[a-z_-]+:?$/i)) {
%error = Invalid header name: Header names can only contain letters, _ and -
}
else {
%com = JSONHandler:: $+ $1
if (1 OK !== $jsTry(%com, $JScript(UrlHeader), status="error", $escape($regsubex($2, :+$, )).quote, $escape($3-).quote).withError) {
%error = $gettok($v2, 2-, 32)
}
else {
Debugger -s $+(%com,>JSONUrlHeader) Header $+(',$2,') set to $3-
}
}
:error
%error = $iif($error, $v1, %error)
reseterror
if (%error) {
set -eu0 %JSONError %error
if (%com) set -eu0 % [ $+ [ %com ] $+ ] ::Error %error
Debugger -e $iif(%com, $v1, 0) /JSONUrlMethod %switches $1- --RAISED-- %error
}
}
alias JSONUrlOption {
if ($isid) return
unset %JSONError
Debugger -i 0 /JSONUrlOption is depreciated and will be removed. Please use /JSONUrlMethod and /JSONUrlHeader
if ($2 == method) {
JSONUrlMethod $1 $3-
}
else {
JSONUrlHeader $1-
}
}
alias JSONUrlGet {
if ($isid) return
unset %JSONError
Debugger -i 0 Calling /JSONUrlGet $1-
var %switches = -, %error, %com, %file
if (-* iswm $1) {
%switches = $1
tokenize 32 $2-
}
if (!$0 || (%switches != - && $0 < 2)) {
%error = Missing parameters
}
elseif (!$regex(%switches, ^-[bf]?$)) {
%error = Invalid switch(es) specified
}
elseif (!$regex($1, /^[a-z][a-z\d_.\-]+$/i)) {
%error = Invalid handler name: Must start with a letter and contain only letters numbers _ . and -
}
elseif (!$com(JSONHandler:: $+ $1)) {
%error = Specified handler does not exist
}
elseif (b isincs %switches && &* !iswm $2) {
%error = Invalid bvar name: bvars start with &
}
elseif (b isincs %switches && $0 > 2) {
%error = Invalid bvar name: Contains spaces: $2-
}
elseif (f isincs %switches && !$isfile($2-)) {
%error = Specified file does not exist: $longfn($2-)
}
else {
%com = JSONHandler:: $+ $1
if ($0 > 1) {
if (f isincs %switches) {
if (0 ?* iswm $jsTry(%com, $JScript(UrlData), status="error", $escape($longfn($2-)).quote).withError) {
%error = $gettok($v2, 2-, 32)
}
else {
Debugger -s $+(%com,>JSONUrlGet) Stored $longfn($2-) as data to send with HTTP Request
}
}
else {
%file = $tempfile
if (b isincs %switches) {
bwrite $qt(%file) -1 -1 $2
}
else {
write -n $qt(%file) $2-
}
Debugger -s $+(%com,>JSONUrlGet) Wrote specified data to %file
if (0 ?* iswm $jsTry(%com, $JScript(UrlData), status="error", $escape(%file).quote).withError) {
%error = $gettok($v2, 2-, 32)
}
else {
Debugger -s $+(%Com,>JSONUrlGet) Stored $2- as data to send with HTTP Request
}
.remove $qt(%file)
}
}
if (!%error) {
if (0 ?* iswm $jsTry(%com, $JScript(URLParse), status="error").withError) {
%error = $gettok($v2, 2-, 32)
}
else {
Debugger -s $+(%com,>JSONUrlGet) Request finished
}
}
}
:error
%error = $iif($error, $v1, %error)
reseterror
if (%error) {
set -eu0 %JSONError %error
if (%com) set -eu0 % [ $+ [ %com ] $+ ] ::Error %error
Debugger -e $iif(%com, $v1, 0) /JSONUrlGet %switches $1- --RAISED-- %error
}
}
alias JSONGet {
if ($isid) return
unset %JSONError
debugger -i 0 /JSONGet is depreciated and will be removed. Please use /JSONUrlGet
JSONUrlGet $1-
}
alias JSONClose {
if ($isid) return
unset %JSONError
Debugger -i 0 /JSONClose $1-
var %switches = -, %error, %com, %x
if (-* iswm $1) {
%switches = $1
tokenize 32 $2-
}
if ($0 < 1) {
%error = Missing parameters
}
elseif ($0 > 1) {
%error = Too many parameters specified.
}
elseif (%switches !== - && %switches != -w) {
%error = Unknown switches specified
}
elseif (%switches == -) {
%com = JSONHandler:: $+ $1
if ($com(%com)) { .comclose %com }
if ($timer(%com)) { $+(.timer,%com) off }
unset % [ $+ [ %com ] $+ ] ::Error
Debugger -i %com Closed
}
else {
%com = JSONHandler:: $+ $1
%x = 1
while (%x <= $com(0)) {
if (%com iswm $com(%x)) {
.comclose $v1
$+(.timer,$v1) off
unset % [ $+ [ $v1 ] $+ ] ::*
Debugger -i %com Closed
}
else {
inc %x
}
}
}
:error
%error = $iif($error, $v1, %error)
reseterror
if (%error) {
set -eu0 %JSONError %error
}
}
alias JSONList {
if ($isid) return
Debugger -i 0 Calling /JSONList $1-
var %x = 1, %i = 0
while ($com(%x)) {
if (JSONHandler::* iswm $v1) {
inc %i
echo $color(info) -a * # $+ %i : $regsubex($v2, /^JSONHandler::/, )
}
inc %x
}
if (!%i) {
echo $color(info) -a * No active JSON handlers
}
}
alias JSON {
if (!$isid) {
return
}
var %x, %calling, %i = 0, %com, %get = json, %ref = $false, %error, %file
if ($JSONDebug) {
%x = 0
while (%x < $0) {
inc %x
%calling = %calling $+ $iif(%calling,$chr(44)) $($ $+ %x,2)
}
debugger -i 0 Calling $!JSON( $+ %calling $+ $chr(41) $+ $iif($prop,. $+ $prop)
}
if (!$0) {
return
}
if ($regex($1, ^\d+$)) {
%x = 1
while ($com(%x)) {
if (JSONHandler::* iswm $v1) {
inc %i
if (%i == $1) {
%com = $com(%x)
break
}
}
inc %x
}
if ($0 == 1 && $1 == 0) {
return %i
}
}
elseif ($regex($1, /^[a-z][a-z\d_.-]+$/i)) {
%com = JSONHandler:: $+ $1
}
elseif ($regex($1, /^(JSONHandler::[a-z][a-z\d_.-]+)::(.+)$/i)) {
%com = $regml(1)
%get = json $+ $regml(2)
%ref = $true
}
if (!%com) {
%error = Invalid name specified
}
elseif (!$com(%com)) {
%error = Handler doesn't exist
}
elseif (!$regex($prop, /^(?:Status|IsRef|IsChild|Error|Data|UrlStatus|UrlStatusText|UrlHeader|Fuzzy|FuzzyPath|Type|Length|ToBvar|IsParent)?$/i)) {
%error = Unknown prop specified
}
elseif ($0 == 1) {
if ($prop == isRef) {
return %ref
}
elseif ($prop == isChild) {
Debugger -i 0 $!JSON().isChild is depreciated use $!JSON().isRef
return %ref
}
elseif ($prop == status) {
if ($com(%com, eval, 1, bstr, status) && !$comerr) {
return $com(%com).result
}
else {
%error = Unable to determine status
}
}
elseif ($prop == error) {
if ($eval($+(%,%com,::Error),2)) {
return $v1
}
elseif ($com(%com, eval, 1, bstr, error) && !$comerr) {
return $com(%com).result
}
else {
%error = Unable to determine if there is an error
}
}
elseif ($prop == UrlStatus || $prop == UrlStatusText) {
if (0 ?* iswm $jsTry(%com, $JScript($prop))) {
%error = $gettok($v2, 2-, 32)
}
else {
return $v2
}
}
elseif (!$prop) {
return $regsubex(%com,/^JSONHandler::/,)
}
}
elseif (!$regex($prop, /^(?:fuzzy|fuzzyPath|data|type|length|toBvar|isParent)?$/i)) {
%error = $+(',$prop,') cannot be used when referencing items
}
elseif ($prop == toBvar && $chr(38) !== $left($2, 1) ) {
%error = Invalid bvar specified: bvar names must start with &
}
elseif ($prop == UrlHeader) {
if ($0 != 2) {
%error = Missing or excessive header parameter specified
}
elseif (0 ?* iswm $jsTry(%com, $JScript(UrlHeader), $escape($2).quote)) {
%error = $gettok($v2, 2-, 32)
}
else {
return $gettok($v2, 2-, 32)
}
}
elseif (fuzzy* iswm $prop) {
if ($0 < 2) {
%error = Missing parameters
}
else {
var %x = 2, %path, %res
while (%x <= $0) {
%path = %path $+ $escape($($ $+ %x, 2)).quote $+ $chr(44)
inc %x
}
%res = $jsTry(%com, $JScript(fuzzy), %get, $left(%path, -1))
if (0 ? iswm %res) {
%error = $gettok(%res, 2-, 32)
}
elseif ($prop == fuzzy) {
%get = %get $+ $gettok(%res, 2-, 32)
}
else {
return $regsubex(%get, ^json, ) $+ $gettok(%res, 2-, 32)
}
}
}
if (!%error) {
if (fuzzy* !iswm $prop) {
%x = $iif($prop == toBvar, 3, 2)
while (%x <= $0) {
%i = $ [ $+ [ %x ] ]
if ($len(%i)) {
%get = $+(%get, [", $escape(%i), "])
inc %x
}
else {
%error = Empty index|item passed.
break
}
}
}
if (!%error) {
if ($prop == type) {
if (0 ?* iswm $jsTry(%com, $JScript(typeof), %get)) {
%error = $gettok($v2, 2-, 32)
}
else {
return $gettok($v2, 2-, 32)
}
}
elseif ($prop == length) {
if (0 ?* iswm $jsTry(%com, $JScript(length), %get)) {
%error = $gettok($v2, 2-, 32)
}
else {
return $gettok($v2, 2-, 32)
}
}
elseif ($prop == isParent) {
if (0 ?* iswm $jsTry(%com, $JScript(isparent), %get)) {
%error = $gettok($v2, 2-, 32)
}
else {
return $iif($gettok($v2, 2-, 32), $true, $false)
}
}
elseif ($prop == toBvar) {
%file = $tempfile
if (0 ?* iswm $jsTry(%com, $JScript(tofile), $escape(%file).quote, %get)) {
%error = $gettok($v2, 2-, 32)
}
else {
bread $qt(%file) 0 $file(%file) $2
}
if ($isfile(%file)) { .remove $qt(%file) }
}
elseif (0 ?* iswm $jsTry(%com, $JScript(get), %get)) {
%error = $gettok($v2, 2-, 32)
if (%error == Object or Array referenced) {
%error = $null
Debugger -s $+(%com,>$JSON) Result is an Object or Array; returning reference
return %com $+ :: $+ $regsubex(%get, /^json/, )
}
}
else {
var %res = $gettok($v2, 2-, 32)
Debugger -s $+(%com,>$JSON) %get references %res
return %res
}
}
}
:error
%error = $iif($error, $v1, %error)
if (%error) {
set -eu0 %JSONError
if (%com && $com(%com)) {
set -eu0 $+(%,%com,::Error) %error
}
var %r
%x = 0
while (%x < $0) {
inc %x
%r = $addtok(%r, $chr(32) $+ $ [ $+ [ %x ] ] , 44)
}
debugger -e $iif(%com && $com(%com),%com,0) $!JSON( $+ %r $+ ) $+ $+ $iif($prop,. $+ $prop) --RAISED-- %error
}
}
alias JSONDebug {
if ($isid) {
return $iif($group(#JSONForMircDebug) == on, $true, $false)
}
elseif ($0) {
tokenize 32 $iif($group(#JSONForMircDebug) == on, off, on)
}
if ($regex($1-,/^(?:on|enable)$/i)) {
.enable #JSONForMircDebug
debugger -i Debugger Now Enabled
}
elseif ($regex($1-, /^(?:off|disable)$/i)) {
.disable #JSONForMircDebug
if ($window(@JSONForMircDebug)) {
close -@ @JSONForMircDebug
}
}
}
#JSONForMircDebug off
alias -l Debugger {
if ($isid) return
if (!$window(@JSONForMircDebug)) {
window -zk0 @JSONForMircDebug
}
var %switches = -, %c
if (-* iswm $1) {
%switches = $1
tokenize 32 $2-
}
if (e isincs %switches) {
%c = 04
}
elseif (s isincs %switches) {
%c = 12
}
else {
%c = 03
}
var %n = $iif($1, $1, JSONForMirc)
%n = $regsubex(%n, /^JSONHandler::, )
aline -p @JSONForMircDebug $+($chr(3),%c,[,%n,],$chr(15)) $2-
}
#JSONForMircDebug end
alias -l Debugger return
menu @JSONForMircDebug {
.Clear: clear -@ @JsonForMircDebug
.Disable and Close: JSONDebug off
}
alias -l tempfile {
var %n = 1
while ($isfile($scriptdirJSONTmpFile $+ %n $+ .json)) {
inc %n
}
return $scriptdirJSONTmpFile $+ %n $+ .json
}
alias -l escape {
var %esc = $replace($1-,\,\\,",\")
return $iif($prop == quote, $qt(%esc), %esc)
}
alias -l JScript {
if (!$isid) return
if (!$0) return (function(){status="init";json=null;url={m:"GET",u:null,h:[],d:null};response=null;var r,x=['MSXML2.SERVERXMLHTTP.6.0','MSXML2.SERVERXMLHTTP.3.0','MSXML2.SERVERXMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','Microsoft.XMLHTTP'],i;while(x.length){try{r=new ActiveXObject(x.shift());break}catch(e){}}xhr=r?function(){r.open(url.m,url.u,false);for(i=0;i<url.h.length;i+=1)r.setRequestHeader(url.h[i][0],url.h[i][1]);r.send(url.d);return(response=r).responseText}:function(){throw new Error("HTTP Request object not found")};read=function(f){var a=new ActiveXObject("ADODB.stream"),d;a.CharSet="utf-8";a.Open();a.LoadFromFile(f);if(a.EOF){a.close();throw new Error("No content in file")}d=a.ReadText();a.Close();return d;};write=function(f,d){var a=new ActiveXObject("ADODB.stream");a.CharSet="utf-8";a.Open();a.WriteText(d);a.SaveToFile(f,2);a.Close()};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('Unable to Parse: Invalid JSON')};fuzzy=function(){var a=Array.prototype.slice.call(arguments),b=a.shift(),c="",d=Object.prototype.toString.call(b),e,f,g,h,i;for(e=0;e<a.length;e+=1){f=a[e];if(b.hasOwnProperty(f)){if(typeof b[f]==="function")throw new TypeError("Reference points to a function");b=b[f];c+="[\""+f+"\"]"}else if(d==="[object Object]"){if(typeof f==="number")f=f.toString(10);f=f.toLowerCase();g=-1;i=!1;for(h in b){if(b.hasOwnProperty(h)&&typeof b[h]!=="function"){g+=1;if(h.toLowerCase()===f){b=b[h];c+="[\""+h+"\"]";i=!0;break}else if(g.toString(10)===f){b=b[h];c+="[\""+h+"\"]";i=!0;break}}}if(!i)throw new Error("No matching reference found");}else{throw new Error("Reference does not exist")}d=Object.prototype.toString.call(b)}return c}}());
if ($1 == FileParse) return if(status!=="init")throw new Error("Parse Not Pending");json=parse(read(@1@));status="done"
if ($1 == UrlInit) return if(status!=="init")throw new Error("JSON handler not ready");url.u=@1@;status="url"
if ($1 == UrlMethod) return if(status!=="url")throw new Error("URL Request Not Pending");url.m=@1@
if ($1 == UrlHeader) return if(status!=="url")throw new Error("URL Request Not Pending");url.h.push([@1@,@2@])
if ($1 == UrlData) return if(status!=="url")throw new Error("URL Request Not Pending");url.d=read(@1@)
if ($1 == UrlParse) return if(status!=="url")throw new Error("URL Request Not Pending");json=parse(xhr());status="done"
if ($1 == UrlStatus) return if(status!=="done")throw new Error("Data not parsed");if(!response)throw new Error("URL request not made");return response.status;
if ($1 == UrlStatusText) return if(status!=="done")throw new Error("Data not parsed");if(!response)throw new Error("URL request not made");return response.statusText;
if ($1 == UrlHeader) return if(status!=="done")throw new Error("Data not parsed");if(!response)throw new Error("URL Request not made");return response.getResponseHeader(@1@)
if ($1 == fuzzy) return if(status!=="done")throw new Error("Data not parsed");return "1 "+fuzzy(@1@,@2@)
if ($1 == typeof) return if(status!=="done")throw new Error("Data not parsed");var i=@1@;if(i===undefined)throw new TypeError("Reference doesn't exist");if(i===null)return"1 null";var s=Object.prototype.toString.call(i);if(s==="[object Array]")return"1 array";if(s==="[object Object]")return"1 object";return "1 "+typeof(i)
if ($1 == length) return if(status!=="done")throw new Error("Data not parsed");var i=@1@;if(i===undefined)throw new TypeError("Reference doesn't exist");if(/^\[object (?:String|Array)\]$/.test(Object.prototype.toString.call(i)))return"1 "+i.length.toString(10);throw new Error("Reference is not a string or array");
if ($1 == isparent) return if(status!=="done")throw new Error("Data not parsed");var i=@1@;if(i===undefined)throw new TypeError("Reference doesn't exist");if(/^\[object (?:Object|Array)\]$/.test(Object.prototype.toString.call(i)))return"1 1";return"1 0"
if ($1 == tofile) return if(status!=="done")throw new Error("Data not parsed");var i=@2@;if(i===undefined)throw new TypeError("Reference doesn't exist");if(typeof i!=="string")throw new TypeError("Reference must be a string");write(@1@,i);
if ($1 == get) return if(status!=="done")throw new Error("Data not parsed");var i=@1@;if(i===undefined)throw new TypeError("Reference doesn't exist");if(i===null)return"1";if(/^\[object (?:Array|Object)\]$/.test(Object.prototype.toString.call(i)))throw new TypeError("Object or Array referenced");if(i.length>4000)throw new Error("Data would exceed mIRC's line length limit");if(typeof i == "boolean")return i?"1 1":"1 0";if(typeof i == "number")return "1 "+i.toString(10);return "1 "+i;
}
alias -l jsTry {
if ($isid) {
if ($0 < 2 || $prop == withError && $0 < 3) {
return 0 Missing parameters
}
elseif (!$com($1)) {
return 0 No such com
}
else {
var %code = $2, %error, %n = 2, %o, %js
if ($prop == withError) {
%error = $3
%n = 3
}
%o = %n
while (%n < $0) {
inc %n
set -l $+(%, arg, $calc(%n - %o)) $eval($+($, %n), 2)
}
%code = $regsubex($regsubex(%code, /@(\d+)@/g, $var($+(%, arg, \t ),1).value), [\s;]+$, )
%error = $regsubex($regsubex(%error, /@(\d+)@/g, $var($+(%, arg, \t ),1).value), [\s;]+$, )
if (%code) %code = $v1 $+ ;
if (%error) %error = $v1 $+ ;
%js = (function(){error=null;try{ $+ %code $+ return"1 OK"}catch(e){ $+ %error $+ error=e.message;return"0 "+error}}())
debugger $1>$jsTry Executing: %js
if (!$com($1, eval, 1, bstr, %js) || $comerr) {
return 0 Unable to execute specified javascript
}
return $com($1).result
}
}
}
Well there is one issue I found. The follower piece fails. I follow my channel and it returns not a follower. I don't need that piece. What pieces should I remove or change to make it work?