Snippets Project Page
Author: entropy
Added: 49w
Updated: 49w
mIRC: 7.56+
Hits: 471
Downloads: 10
Review: westor
Size: 5.9KB
2 0
Login to vote.
Memo Relay
v1.2
Simple memo relay script.
Type: !memo <nick> <message>
Download
JSON
▲ Review
▼ Source
; Memo Relay v1.2 - by entropy & maroon 2023 ; Type: !memo <nick> <message> ;=========================================================== MENU menu menubar,status,channel,query { - Memo Relay v1.2 $chr(9) $replace($group(#memo).status,o,O) .Turn it $iif($group(#memo).status == on,Off,On) { $iif($group(#memo).status == on,.disable,.enable) #memo echo 6 -ag * Memo Relay is now: $qt($replace($group(#memo).status,o,O)) } .- .Channel(s) $chr(9) $eval($+(%,memochans,.,$network),2) { var %net = $eval($+(%,memochans,.,$network),2) var %text = $input(Channels list (seperated by comma) or "#" for all?,5,Memo,%net) %text = $replace(%text,$chr(32),$chr(44)) var %a = 1, %b while ($gettok(%text,%a,44)) { %b = $v1 if ($left(%b,1) != $chr(35)) { %text = $reptok(%text,%b,$+($chr(35),%b),1,44) } inc %a } if (%text) { set $+(%,memochans,.,$network) $v1 | echo 6 -ag * Memo Relay Channels are now: $qt($v1) } else { unset $+(%,memochans,.,$network) | echo 6 -ag * Memo Relay Channels are now reset } } .$iif(!$istok($eval($+(%,memochans,.,$network),2),$chan,44) && $eval($+(%,memochans,.,$network),2) != $chr(35) && $menu == channel,Add Channel To list) { var %net = $eval($+(%,memochans,.,$network),2) %net = $addtok(%net,$chan,44) set $+(%,memochans,.,$network) %net echo 6 -ag * Memo Relay Channels are now: $qt(%net) } .$iif($istok($eval($+(%,memochans,.,$network),2),$chan,44) && $menu == channel,Delete Channel From list) { var %net = $eval($+(%,memochans,.,$network),2) %net = $remtok(%net,$chan,1,44) set $+(%,memochans,.,$network) %net echo 6 -ag * Memo Relay Channels are now $+ $iif(!%net,$chr(32) reset,: $qt(%net)) } .- .$iif($eval($+(%,memochans,.,$network),2),Delete all Channels) { unset $+(%,memochans,.,$network) echo 6 -ag * Memo Relay Channels are now reset } - } ;=========================================================== EVENTS #memo off on *:input:$($eval($+(%,memochans,.,$network),2)):{ if (/* !iswm $1 && $server) { if (!memo == $1 && $3 != $null) { if ($2 == $me) { .notice $me [Memo] $c You cannot memo yourself! } else { addmemo $network $address($me,5) # $2 $3- | .notice $me [Memo] $c Memo Sent! (memos older than 30d are auto deleted) } } relaymemo $network # $me } } on *:text:*:$($eval($+(%,memochans,.,$network),2)):{ if (!memo == $1 && $3 != $null) { if ($2 == $nick) { .notice $2 [Memo] $c You cannot memo yourself! } else { addmemo $network $address($nick,5) # $2 $3- | .notice $nick [Memo] $c Memo Sent! (memos older than 30d are auto deleted) } } relaymemo $network # $nick } on *:action:*:$($eval($+(%,memochans,.,$network),2)):{ relaymemo $network # $nick } on !*:join:$($eval($+(%,memochans,.,$network),2)):{ relaymemo $network # $nick } on me:*:join:$($eval($+(%,memochans,.,$network),2)):{ if ($chan(#).ial == $false) { .ialfill # } | loadit $network # } on *:nick:{ var %a = 1, %b | while ($comchan($newnick,%a)) { %b = $v1 | if ($istok($eval($+(%,memochans,.,$network),2),%b,44) || $eval($+(%,memochans,.,$network),2) == $chr(35)) { relaymemo $network %b $newnick } | inc %a } } #memo end on *:unload:{ echo 6 -ag * Memo Relay is now: "unloaded" | unloadit } on *:load:{ echo 6 -ag * Memo Relay is: "loaded" | if (!$isdir(Memos)) { mkdir Memos } } ;=========================================================== ALIASES alias -l unloadit { var %a = 1, %b, %c while ($findfile(Memos\,*.*,%a)) { %b = $v1 %c = $nopath($remove(%b,.dat)) if ($hget(%c)) { hfree %c } .remove $qt(%b) inc %a } unset $+(%,memochans,*) rmdir Memos } alias -l loadit { ;$1=Network,$2=Channel if (!$hget($+($1,.,$2,.memo))) { hmake $+($1,.,$2,.memo) 100 if ($file($+(Memos\,$mkfn($+($1,.,$2,.memo.dat)))).size) { hload $+($1,.,$2,.memo) $qt($+(Memos\,$mkfn($+($1,.,$2,.memo.dat)))) } } checkstale $1 $2 } alias -l saveit { ;$1=Network,$2=Channel var %file = $qt($+(Memos\,$mkfn($+($1,.,$2,.memo.dat)))) if ($hget($+($1,.,$2,.memo),1).item) { hsave $+($1,.,$2,.memo) %file } elseif ($isfile(%file)) { .remove %file } } alias -l checkstale { ;$1=Network,$2=Channel if ($nick($2,$me)) { var %table = $+($1,.,$2,.memo) | noop $hfind(%table,*,0,w,if ($calc($ctime - $1) > 2592000) hdel %table $1) } } alias -l addmemo { ;$1=Network,$2=Nick,$3=Channel,$4=Nick,$5=Message hadd -m $+($1,.,$3,.memo) $+($ctime,.,$4) $2 $5- saveit $1 $3 } alias -l relaymemo { ;$1=Network,$2=Channel,$3=nick if ($hfind($+($1,.,$2,.memo),$+(*.,$3),0,w) >= 1) { var %a = 1, %b, %c, %t = 1, %r, %output, %all, %ctime, %nick, %host, %done while ($hfind($+($1,.,$2,.memo),$+(*.,$3),%a,w)) { %b = $v1 %all = %all %b inc %a } %a = 1 %all = $sorttok(%all,32,n) while ($gettok(%all,%a,32)) { %b = $v1 %r = $hget($+($1,.,$2,.memo),%b) %nick = $gettok($gettok(%r,1,32),1,33) %host = $gettok($gettok(%r,1,32),2-,33) %output = $gettok(%r,2-,32) %ctime = $gettok(%b,1,46) %done = $1-3 %nick %host %ctime %output .timer 1 %t checknick $unsafe(%done) inc %t 2 inc %a } } } alias -l checknick { ;$1=Network,$2=Channel,$3=Output Nick,$4=From Nick,$5=Host,$6=CTIME,$7=Output Text if ($comchan($3,1)) { .notice $3 $+([Memo/,$4,]) $c $+([,$5,]) $c $iif($len($7-) >= 380,$+($mid($7-,1,380),...),$7-) $dur($6) hdel $+($1,.,$2,.memo) $+($6,.,$3) saveit $1 $2 } } alias -l dur { return $+($chr(40),$remove($replace($duration($calc($ctime - $1)),wks,w,wk,w,days,d,day,d,hrs,h,hr,h,mins,m,min,m,secs,s,sec,s),$chr(32)),$chr(32),ago,$chr(41)) } alias -l unsafe { returnex $+($,decode,$chr(40),$encode($1,m),$chr(44),m,$chr(41)) } alias -l c { return $chr(9679) }
Changelog:
0
0