# Memos2mail.irc, script that retrieves DALnet MemoServ memos # and saves them in a log file, and then exits. # Author: Wizzu # Date: 6 Sep 1996 # Concept from abtm set novice off set suppress_server_motd on # Notify handlers, check for MemoServ ^on ^notify_signon "MemoServ" { ^assign memoserv_online 1 ^set log on readlist } ^on ^notify_signoff "MemoServ" bailout MemoServ signoff detected, quitting. # Make the normal notices and the new memo notice silent. on ^notice "*" # on ^raw_irc "MemoServ!service@dal.net NOTICE % :You have % new memo(s). To get: /msg MemoServ list" # # Exit with a message. alias bailout { if ([$0]) { echo $0- } { echo Quitting. } set log off quit } # Check if MemoServ signon has been detected, bail out if not. alias quit_if_no_memoserv { if ([$memoserv_online]==[]) { bailout MemoServ not seen during one minute after logon, quitting. } } # Read the memo index list alias readlist { ^on ^raw_irc "MemoServ!service@dal.net NOTICE % : *" { @ memonr = [$strip(* $4)] @ memos[$memonr][sender] = [$encode($5)] @ memos[$memonr][date] = [$encode($6 $7-)] @ memolist = [$memonr ] ## [$memolist] } ^on ^raw_irc "MemoServ!service@dal.net NOTICE % :You have no memos." bailout No memos. ^on ^raw_irc "MemoServ!service@dal.net NOTICE % :End of list" { ^on ^raw_irc "MemoServ!service@dal.net NOTICE % :*" echo $strip( $$strip(: $3) $$4-) ^on raw_irc -"MemoServ!service@dal.net NOTICE % : *" ^on raw_irc -"MemoServ!service@dal.net NOTICE % :You have no memos." ^on raw_irc -"MemoServ!service@dal.net NOTICE % :End of list" timer 1 readmemos } msg MemoServ list } # Start from first memo in list alias readmemos { @ mn = 0 readmemo $word($mn $memolist) } # Advance in memo list alias nextmemo { @ mn = mn + 1 if ([$word($mn $memolist)]!=[]) { timer 1 readmemo $word($mn $memolist) } { cleanup } } # Handle MemoServ responses on ^raw_irc "MemoServ!service@dal.net NOTICE % :Memo % from *" { ^msg MemoServ del $4 } ^on ^raw_irc "MemoServ!service@dal.net NOTICE % :Memo % has been marked as deleted" { echo Memo deleted. echo nextmemo } ^on ^raw_irc "MemoServ!service@dal.net NOTICE % :Error: No such memo %" { echo Error: $4- echo nextmemo } # Read memo $0 alias readmemo { echo Retrieving memo $0: sender $decode($memos[$0][sender]), date $decode($memos[$0][date]) ^msg MemoServ read $0 } # This is called after successfully retrieving and deleting all memos. alias cleanup { echo All done. quit } # Actual commands to run at logon start here. # Set logfile, logging will be started when MemoServ notify goes off. set logfile memos2mail.log # This actually starts the round of happenings.. # When MemoServ is seen to sign on. notify MemoServ # If MemoServ isn't seen during the 60 seconds after logon, bail out. timer 60 quit_if_no_memoserv timer 900 bailout 15 minutes after logon, timeout reached: quitting.