Details
ID: D4MwoEUKOo8M
Author: entropy
Desc: Memo Relay v1.2
Language: msl
Size: 5.56KB
Hits: 208
Public: Yes
Added: 5/18/23 (50w ago)
Last Edited: 5/26/23 (48w ago)
Expires: No

Raw
DL
Copy
Wrap
Details
  1. ; Memo Relay v1.2 - by entropy & maroon 2023
  2. ; Type: !memo <nick> <message>
  3.  
  4. ;=========================================================== MENU
  5.  
  6. menu menubar,status,channel,query {
  7.   -
  8.   Memo Relay v1.2 $chr(9) $replace($group(#memo).status,o,O)
  9.   .Turn it $iif($group(#memo).status == on,Off,On) {
  10.     $iif($group(#memo).status == on,.disable,.enable) #memo
  11.     echo 6 -ag * Memo Relay is now: $qt($replace($group(#memo).status,o,O))
  12.   }
  13.   .-
  14.   .Channel(s) $chr(9) $eval($+(%,memochans,.,$network),2) {
  15.     var %net = $eval($+(%,memochans,.,$network),2)
  16.     var %text = $input(Channels list (seperated by comma) or "#" for all?,5,Memo,%net)
  17.     %text = $replace(%text,$chr(32),$chr(44))
  18.     var %a = 1, %b
  19.     while ($gettok(%text,%a,44)) {
  20.       %b = $v1
  21.       if ($left(%b,1) != $chr(35)) { %text = $reptok(%text,%b,$+($chr(35),%b),1,44) }
  22.       inc %a
  23.     }
  24.     if (%text) { set $+(%,memochans,.,$network) $v1 | echo 6 -ag * Memo Relay Channels are now: $qt($eval($+(%,memochans,.,$network),2)) }
  25.     else { unset $+(%,memochans,.,$network) | echo 6 -ag * Memo Relay Channels are now reset }
  26.   }
  27.   .$iif(!$istok($eval($+(%,memochans,.,$network),2),$chan,44) && $eval($+(%,memochans,.,$network),2) != $chr(35) && $menu == channel,Add Channel To list) {
  28.     var %net = $eval($+(%,memochans,.,$network),2)
  29.     %net = $addtok(%net,$chan,44)
  30.     set $+(%,memochans,.,$network) %net
  31.     echo 6 -ag * Memo Relay Channels are now: $qt(%net)
  32.   }
  33.   .$iif($istok($eval($+(%,memochans,.,$network),2),$chan,44) && $menu == channel,Delete Channel From list) {
  34.     var %net = $eval($+(%,memochans,.,$network),2)
  35.     %net = $remtok(%net,$chan,1,44)
  36.     set $+(%,memochans,.,$network) %net
  37.     echo 6 -ag * Memo Relay Channels are now $+ $iif(!%net,$chr(32) reset,: $qt(%net))
  38.   }
  39.   .-
  40.   .$iif($eval($+(%,memochans,.,$network),2),Delete all Channels) {
  41.     unset $+(%,memochans,.,$network)
  42.     echo 6 -ag * Memo Relay Channels are now reset
  43.   }
  44.   -
  45. }
  46.  
  47. ;=========================================================== EVENTS
  48.  
  49. #memo off
  50. on *:input:$($+(%,memochans,.,$network)):{ if (/* !iswm $1 && $server) { if (!memo == $1 && $3 != $null) { if ($2 == $me) { .notice $2 [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 } }
  51. on *:text:*:$($+(%,memochans,.,$network)):{ 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 }
  52. on *:action:*:$($+(%,memochans,.,$network)):{ relaymemo $network # $nick }
  53. on !*:join:$($+(%,memochans,.,$network)):{ relaymemo $network # $nick }
  54. on me:*:join:$($+(%,memochans,.,$network)):{ if ($chan(#).ial == $false) { .ialfill # } | loadit $network # }
  55. 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 } }
  56. #memo end
  57.  
  58. on *:unload:{ echo 6 -ag * Memo Relay is now: "unloaded" | unloadit }
  59. on *:load:{ echo 6 -ag * Memo Relay is: "loaded" | if (!$isdir(Memos)) { mkdir Memos } }
  60.  
  61. ;=========================================================== ALIASES
  62.  
  63. alias -l unloadit {
  64.   var %a = 1, %b, %c
  65.   while ($findfile(Memos\,*.*,%a)) {
  66.     %b = $v1
  67.     %c = $nopath($remove(%b,.dat))
  68.     if ($hget(%c)) { hfree %c }
  69.     .remove $qt(%b)
  70.     inc %a
  71.   }
  72.   unset $+(%,memochans,*)
  73.   rmdir Memos
  74. }
  75. alias -l loadit {
  76.   ;$1=Network,$2=Channel
  77.   if (!$hget($+($1,.,$2,.memo))) { 
  78.     hmake $+($1,.,$2,.memo) 100
  79.     if ($file($+(Memos\,$mkfn($+($1,.,$2,.memo.dat)))).size) { hload $+($1,.,$2,.memo) $qt($+(Memos\,$mkfn($+($1,.,$2,.memo.dat)))) }
  80.   }
  81.   checkstale $1 $2
  82. }
  83. alias -l saveit {
  84.   ;$1=Network,$2=Channel
  85.   var %file = $qt($+(Memos\,$mkfn($+($1,.,$2,.memo.dat))))
  86.   if ($hget($+($1,.,$2,.memo),1).item) { hsave $+($1,.,$2,.memo) %file }
  87.   elseif ($isfile(%file)) { .remove %file }
  88. }
  89. alias -l checkstale {
  90.   ;$1=Network,$2=Channel
  91.   if ($nick($2,$me)) { var %table = $+($1,.,$2,.memo) | noop $hfind(%table,*,0,w,if ($calc($ctime - $1) > 2592000) hdel %table $1) }
  92. }
  93. alias -l addmemo {
  94.   ;$1=Network,$2=Nick,$3=Channel,$4=Nick,$5=Message
  95.   hadd -m $+($1,.,$3,.memo) $+($ctime,.,$4) $2 $5-
  96.   saveit $1 $3
  97. }
  98. alias -l relaymemo {
  99.   ;$1=Network,$2=Channel,$3=nick
  100.   if ($hfind($+($1,.,$2,.memo),$+(*.,$3),0,w) >= 1) {
  101.     var %a = 1, %b, %c, %t = 1, %r, %output, %all, %ctime, %nick, %host, %done
  102.     while ($hfind($+($1,.,$2,.memo),$+(*.,$3),%a,w)) {
  103.       %b = $v1
  104.       %all = %all %b
  105.       inc %a
  106.     }
  107.     %a = 1
  108.     %all = $sorttok(%all,32,n)
  109.     while ($gettok(%all,%a,32)) {
  110.       %b = $v1
  111.       %r = $hget($+($1,.,$2,.memo),%b)
  112.       %nick = $gettok($gettok(%r,1,32),1,33)
  113.       %host = $gettok($gettok(%r,1,32),2-,33)
  114.       %output = $gettok(%r,2-,32)
  115.       %ctime = $gettok(%b,1,46)
  116.       %done = $1-3 %nick %host %ctime %output
  117.       .timer 1 %t checknick $unsafe(%done)
  118.       inc %t 2
  119.       inc %a
  120.     }
  121.   }
  122. }
  123. alias -l checknick {
  124.   ;$1=Network,$2=Channel,$3=Output Nick,$4=From Nick,$5=Host,$6=CTIME,$7=Output Text
  125.   if ($comchan($3,1)) {
  126.     .notice $3 $+([Memo/,$4,]) $c $+([,$5,]) $c $7- $dur($6)
  127.     hdel $+($1,.,$2,.memo) $+($6,.,$3)
  128.     saveit $1 $2
  129.   }
  130. }
  131. alias -l dur {
  132.   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))
  133. }
  134. alias -l unsafe { returnex $+($,decode,$chr(40),$encode($1,m),$chr(44),m,$chr(41)) }
  135. alias -l c { return $chr(9679) }

 1  0 Login to vote.

Login to comment.