All pastes #906317 Raw Edit

Stuff

public text v1 · immutable
·published 2008-02-16 16:16 UTC
rendered paste body
///////////////////////
Away by Game| v2.0
COPYRIGHT
///////////////////////




; ##############################################
; # Start Idle Away Timer                      #
; ##############################################
on *:start: if ($readini(Settings.ini,Away.Config,AutoAway) == on) .timerAway.IdleCheck -o 0 30 Away.IdleCheck
; ##############################################
; # Load Default Options                       #
; ##############################################
on *:load: {
  if (!$readini(Settings.ini,Away.Config,NickEditType))      writeini Settings.ini Away.Config NickEditType Suffix
  if (!$readini(Settings.ini,Away.Config,NickPrefix))        writeini Settings.ini Away.Config NickPrefix Away|
  if (!$readini(Settings.ini,Away.Config,NickSuffix))        writeini Settings.ini Away.Config NickSuffix |Away
  if (!$readini(Settings.ini,Away.Config,AutoAway))          writeini Settings.ini Away.Config AutoAway off
  if (!$readini(Settings.ini,Away.Config,AutoAwayTime))      writeini Settings.ini Away.Config AutoAwayTime 900
  if (!$readini(Settings.ini,Away.Config,LeavingTime))       writeini Settings.ini Away.Config LeavingTime off
  if (!$readini(Settings.ini,Away.Config,LeavingTimeFormat)) writeini Settings.ini Away.Config LeavingTimeFormat HH:nn:ss
  if (!$readini(Settings.ini,Away.Config,TimeAway))          writeini Settings.ini Away.Config TimeAway off
  if (!$readini(Settings.ini,Away.Config,TimeAwayFormat))    writeini Settings.ini Away.Config TimeAwayFormat Short
  if (!$readini(Settings.ini,Away.Config,ARChannelMessage))  writeini Settings.ini Away.Config ARChannelMessage off
  if (!$readini(Settings.ini,Away.Config,ARPrivateMessage))  writeini Settings.ini Away.Config ARPrivateMessage off
  echo -a 4>>> Successfully loaded $remove($script,$scriptdir) - Away System script written by Urza
}
; ##############################################
; # Remove Away if unloaded                    #
; ##############################################
on *:unload: { 
  disable #away
  unset %away.*
  hfree away.*.responses
}
; ##############################################
; # Check for away on connect                  #
; ##############################################
on *:connect: {
  if ($group(#away) == on) {
    var %edittype = $readini(Settings.ini,Away.Config,NickEditType)
    if (%Away.Preset) var %nickadd = $gettok($readini(Settings.ini,Away.Config,Preset. $+ %Away.Preset),2,32)
    else var %nickadd = $readini(Settings.ini,Away.Config,Nick $+ %edittype)
    if (%edittype == Prefix) && ($+(%nickadd,*) !iswm $me) nick $+(%nickadd,$me)
    if (%edittype == Suffix) && ($+(*,%nickadd) !iswm $me) nick $+($me,%nickadd)

    ame is currently away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavtime) $iif($Away.Gonefor,- Gone for $Away.Gonefor)
    !away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavtime) $iif($Away.Gonefor,- Gone for $Away.Gonefor)
  }
}
; ##############################################
; # Cancel Away on exit                        #
; ##############################################
on *:exit: {
  disable #away
  unset %away.*
}
; ##############################################
; # Popup Menus                                #
; ##############################################
menu status,channel,query,menubar,@Away.Logs {
  -
  Away Settings
  .Open away options: dialog $iif($dialog(away),-o,-m) away away
  .$iif($active == @Away.Logs,Close window):window -c $active
  . -
  . Set away $+ $chr(58) $iif($group(#away) == off,on,off): {
    if ($group(#away) == off) away $?="Enter away reason or leave black for default (if set)"
    else back
  }
  .-
  .$iif($group(#away) == on && %Away.Preset == 1,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.1),$style(2))) Preset 1 - $iif($readini(settings.ini,Away.Config,Preset.1),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.1),1,32)
  .$iif($group(#away) == on && %Away.Preset == 2,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.2),$style(2))) Preset 2 - $iif($readini(settings.ini,Away.Config,Preset.2),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.2),1,32)
  .$iif($group(#away) == on && %Away.Preset == 3,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.3),$style(2))) Preset 3 - $iif($readini(settings.ini,Away.Config,Preset.3),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.3),1,32)
  .$iif($group(#away) == on && %Away.Preset == 4,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.4),$style(2))) Preset 4 - $iif($readini(settings.ini,Away.Config,Preset.4),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.4),1,32)
  .$iif($group(#away) == on && %Away.Preset == 5,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.5),$style(2))) Preset 5 - $iif($readini(settings.ini,Away.Config,Preset.5),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.5),1,32)
  .$iif($group(#away) == on && %Away.Preset == 6,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.6),$style(2))) Preset 6 - $iif($readini(settings.ini,Away.Config,Preset.6),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.6),1,32)
  .$iif($group(#away) == on && %Away.Preset == 7,$style(3),$iif($group(#away) == on || !$readini(Settings.ini,Away.Config,Preset.7),$style(2))) Preset 7 - $iif($readini(settings.ini,Away.Config,Preset.7),$gettok($v1,1,32),Not set):away $gettok($readini(settings.ini,Away.Config,Preset.7),1,32)

}

; ##############################################
; # Main Dialog                                #
; ##############################################
dialog away {
  title Away System Settings
  size -1 -1 150 180 
  option dbu
  box "Away Settings",                 1,  4   4     142 150
  Box "Nick Settings",                 2,  7   12    136 25
  combo                                3,  12  22    50  10, drop
  edit "",                             5,  65  22    50  10
  button "?",                          6,  128 22    10  10
  box "Away Options"                   4,  7   40    136 75
  text "Default Away Message:",        24, 12  48    100 10 
  edit "",                             25, 12  56    100 10
  button "?",                          26, 128 56    10  10
  check "A&uto Away After",            7,  12  70    50  10
  edit "",                             8,  63  70    10  10
  text "minutes Idle.",                9,  75  72.5  40  10 
  button "?",                          10, 128 70    10  10
  check "Show &Leaving Time?"          11, 12  85    60  10
  edit ""                              12, 75  85    50  10
  button "?",                          13, 128 85    10  10
  check "Show &Time Away?"             14, 12  100   55  10
  combo                                15, 75  100   50  10, drop
  button "?",                          16, 128 100   10  10
  box "Auto Return"                    17, 7   115   136 35
  text "Cancel away on:"               18, 12  126   80  10
  check  "&Channel Message"            19, 60  125   50  10
  check  "&Private Message"            20, 60  135   50  10
  button "?",                          21, 128 135   10  10
  button "Edit &Presets"               22, 12  160   60  15
  button "&Ok"                         23, 80  160   60  15, ok
}
; ##############################################
; # Custom presets dialog                      #
; ##############################################
dialog Custom.Aways {
  title Custom Away Messages
  size -1 -1 230 110 
  option dbu
  box  "Custom Away Triggers"          1, 4    4  222 85
  text "Trigger",                      2, 16   12 30  10
  text "Pre/Suffix",                   3, 43   12 30  10
  text "Away Message",                 4, 100  12 50  10
  list                                 5, 10   20 30  50
  list                                 6, 40   20 30  50 
  list                                 7, 70   20 150 50
  button "Add"                         8, 10   70 50  15
  button "Delete"                      9, 70   70 50  15
  button "Edit"                        10, 130 70 50  15
  button "OK",                         11, 70  90 50  15, OK
}
; ##############################################
; # Help Dialogs                               #
; ##############################################
dialog Away.Help.6 {
  title Away System Help
  size -1 -1 150 120 
  option dbu
  box "Nick Suffix/Prefix Help",                                                              1, 5  5   140 90
  text "Nick PREFIX: Adds the specified text to the FRONT of your nick when going away",      2, 8  15  133 20
  text "Nick SUFFIX: Adds the specified text to the END of your nick when going away",        3, 8  35  133 20
  text "Don’t Change: Means that you’re nick will not change when going away or coming back", 4, 8  55  133 20          
  text "Suffixes and prefixes will be automatically removed when you return from away",       5, 8  75  133 20
  button "OK",                                                                                6, 50 100 50 15, OK
}
dialog Away.Help.10 {
  title Away System Help
  size -1 -1 150 70 
  option dbu
  box "Auto Away Help",                                                                                1, 5 5 140 40
  text "Enabling Auto-Away will automatically set you as away if you are idle for the specified time", 2, 8 15 134 20
  text "Time must be between 1 and 60 minutes",                                                        3, 8 35 134 20
  button "OK",                                                                                         4, 50 50 50 15, ok
}
dialog Away.Help.13 {
  title Away System Help
  size -1 -1 150 80 
  option dbu
  box "Show Leaving Time Help",                                                                                                    1, 5 5 140 50
  text "Enabling 'Show Leaving Time' will display the time you went away in all your away messages in the specified Time Format",  2, 8 15 134 20
  button "Click Here for a list of codes used in time format",                                                                     3, 8 40 134 10
  button "OK",                                                                                                                     4, 50 60 50 15, ok
}
dialog Away.Help.16 {
  title Away System Help
  size -1 -1 150 90 
  option dbu
  box "Show Time Away Help",                                                                                                         1, 5 5 140 60
  text "Enabling 'Show Time Away' will display how long you have been away in all your away messages in the specified Time Format",  2, 8 15 134 20
  text "Example of Short format: 5h 6m 10s"                                                                                          3, 8 40 134 10
  text "Example of Medium format: 5hrs 6mins 10secs"                                                                                 4, 8 48 134 10
  text "Example of long format: 5 hours 6 minutes 10 seconds"                                                                        5, 8 56 134 10
  button "OK",                                                                                                                       6, 50 70 50 15, ok
}
dialog Away.Help.21 {
  title Away System Help
  size -1 -1 150 65 
  option dbu
  box "Automatic Return Help",                                                                                                    1, 5 5 140 35
  text "Enabling 'Automatic Return' will automatically bring you back from away if you send any Channel And/Or Private message",  2, 8 15 134 20
  button "OK",                                                                                                                    5, 50 45 50 15, ok
}
dialog Away.Help.26 {
  title Away System Help
  size -1 -1 150 55
  option dbu
  box "Default Message Help",                                                    1, 5  5  140 27
  text "If you do not enter a reason when going away this default will be used", 2, 8  15 134 20
  button "OK",                                                                   3, 50 35 50 15, ok
}
dialog Away.Help.Time {
  title Away System Help
  size -1 -1 150 155
  option dbu
  box "Time Format Help",                                                   1, 5 5 140 120
  text "The following is a list of Codes that can be used in Time Formats", 2, 8 15 134 20
  box "Time Format Codes",                                                  3, 8 30 134 88
  list                                                                      4, 20 40 20 75
  list                                                                      5, 40 40 90 75
  button "OK",                                                              6, 50 130 50 15, ok
}

; ##############################################
; # Dialog Initiation events                   #
; ##############################################
on *:dialog:Away.Help.Time:init:*: {
  did -a $dname 4 HH
  did -a $dname 5 Hours - 2 Digit 24 hour time - $time(HH)
  did -a $dname 4 H 
  did -a $dname 5 Hours - 1 Digit 24 hour time - $time(H)
  did -a $dname 4 hh
  did -a $dname 5 Hours - 2 Digit 12 hour time - $time(hh)
  did -a $dname 4 h
  did -a $dname 5 Hours - 1 Digit 12 hour time - $time(h)
  did -a $dname 4 nn 
  did -a $dname 5 Minutes - 2 Digit - $time(nn)
  did -a $dname 4 n
  did -a $dname 5 Minutes - 1 Digit - $time(n)
  did -a $dname 4 ss 
  did -a $dname 5 Seconds - 2 Digit - $time(ss)
  did -a $dname 4 s
  did -a $dname 5 Seconds - 1 Digit - $time(s)
  did -a $dname 4 tt
  did -a $dname 5 am/pm - Lower case - $time(tt)
  did -a $dname 4 TT
  did -a $dname 5 AM/PM - Upper Case - $time(TT)
}

on *:dialog:away:init:*: {
  did -a $+ $iif($readini(Settings.ini,Away.Config,NickEditType) == Prefix,c) Away 3 Prefix
  did -a $+ $iif($readini(Settings.ini,Away.Config,NickEditType) == Suffix,c) Away 3 Suffix
  did -a $+ $iif($readini(Settings.ini,Away.COnfig,NickEditType) == Don't Change,c) Away 3 Don't Change
  if ($readini(Settings.ini,Away.Config,NickEditType) == Don't Change) did -m Away 5
  if ($readini(Settings.ini,Away.Config,NickPrefix)) && ($did(away,3).seltext == Prefix) did -ra Away 5 $readini(Settings.ini,Away.Config,NickPrefix) 
  if ($readini(Settings.ini,Away.Config,NickSuffix)) && ($did(away,3).seltext == Suffix) did -ra Away 5 $readini(Settings.ini,Away.Config,NickSuffix)
  if ($readini(Settings.ini,Away.Config,AutoAway) == on) did -c Away 7 | else did -m Away 8
  if ($readini(Settings.ini,Away.Config,AutoAwayTime)) did -a Away 8 $calc($ifmatch / 60) | else did -a Away 8 900
  if ($readini(Settings.ini,Away.Config,LeavingTime) == on) did -c Away 11                | else did -m Away 12
  if ($readini(Settings.ini,Away.Config,LeavingTimeFormat)) did -a Away 12 $ifmatch       | else did -a Away 12 HH:nn:ss
  if ($readini(Settings.ini,Away.Config,TimeAway) == on) did -c Away 14                   | else did -m Away 15
  if ($readini(Settings.ini,Away.Config,TimeAwayFormat) == Short) did -ac Away 15 Short   | else did -a Away 15 Short
  if ($readini(Settings.ini,Away.Config,TimeAwayFormat) == Medium) did -ac Away 15 Medium | else did -a Away 15 Medium
  if ($readini(Settings.ini,Away.Config,TimeAwayFormat) == Long) did -ac Away 15 Long     | else did -a Away 15 Long
  if ($readini(Settings.ini,Away.Config,ARChannelMessage) == on) did -c Away 19
  if ($readini(Settings.ini,Away.Config,ARPrivateMessage) == on) did -c Away 20
  if ($readini(Settings.ini,Away.Config,DefaultMessage)) did -a Away 25 $ifmatch
}
on *:dialog:Custom.Aways:init:*: {
  var %x = 1
  while (%x <= 7) {
    if ($readini(settings.ini,Away.Config,$+(Preset.,%x))) {
      did -a Custom.Aways 5 $gettok($v1,1,32)
      did -a Custom.Aways 6 $gettok($v1,2,32)
      did -a Custom.Aways 7 $gettok($v1,3-,32)
    } 
    else halt
    inc %x
  }
}
; ##############################################
; # Dialog Sclick Events                       #
; ##############################################
on *:dialog:Away.Help.13:sclick:3: {
  dialog $iif($dialog(Away.Help.Time),-o,-m) Away.Help.Time Away.Help.Time
  dialog -x $dname
}
on *:dialog:away:sclick:*: {
  if ($did == 3) {
    writeini Settings.ini Away.Config NickEditType $did(3).seltext
    if ($did(3).seltext == Prefix) did -nra Away 5 $readini(Settings.ini,Away.Config,NickPrefix)
    elseif ($did(3).seltext == suffix) did -nra Away 5 $readini(Settings.ini,Away.Config,NickSuffix)
    else { did -m Away 5 | did -r Away 5 }
  }
  if ($did == 7) && ($did(7).state == 0)  did -m Away 8 
  elseif ($did == 7) && ($did(7).state == 1) did -n Away 8
  elseif ($did == 11) && ($did(11).state == 0) did -m Away 12
  elseif ($did == 11) && ($did(11).state == 1) did -n Away 12
  elseif ($did == 14) && ($did(14).state == 0) did -m Away 15
  elseif ($did == 14) && ($did(14).state == 1) did -n Away 15
  elseif ($istok(6|10|13|16|21|26,$did,124)) dialog $iif($dialog($+(Away.Help.,$did)),-o,-m) $+(Away.Help.,$did) $+(Away.Help.,$did)
  elseif ($did == 22) dialog $iif($dialog(Custom.Aways),-o,-m) Custom.Aways Custom.Aways 
}
on *:dialog:Custom.Aways:sclick:*: { 
  if ($did == 5)     did -c Custom.Aways 6,7 $did(5).sel
  elseif ($did == 6) did -c Custom.Aways 5,7 $did(6).sel
  elseif ($did == 7) did -c Custom.Aways 5,6 $did(7).sel
  elseif ($did == 8) {
    var %x
    if ($did(5).lines >= 7) { %x = $input(ERROR: You may only have a max of 7 presets,wo,Error) | halt }
    var %trigger = $input(Enter a one word Trigger/Description $crlf $+ ----- $crlf $+ For example entering ‘sleep’ means you can go away by typing ‘/away sleep’ or by selecting ‘sleep’ from the away menu,eoq,Input Request)
    if ($numtok(%trigger,32) > 1) { %x = $input(ERROR: You must enter a single word trigger,wo,Invalid Input) | halt } 
    elseif (!%trigger) { %x = $input(ERROR: Trigger can not be null,wo,Invalid Input) | halt }
    var %NickEdit = $input(Enter nick prefix/suffix $crlf $+ This is the text that will be added to the beginning or end of your nick when using this preset $crlf $+ ----- $crlf $+ Keep blank if you don’t wish to change your nick $crlf $+ ----- $crlf $+ NOTE: if you have 'Don't Change' set in the main options this setting IS overwritten,eoq,Input Request)
    if (!%NickEdit) var %NickEdit = -
    elseif ($remove(%Nickedit,$chr(124),$chr(91),$chr(93),$chr(92),$chr(45),$chr(95),$chr(123),$chr(125)) !isalnum) { %x = $input(ERROR: Invalid Nick Characters detected,wo,Invalid Input) | halt }
    var %Message = $input(Enter away message $crlf $+ ----- $crlf $+ This is the default away message used when setting away with this preset,eoq,Input Request)
    did -a Custom.Aways 5 %trigger
    did -a Custom.Aways 6 %NickEdit
    did -a Custom.Aways 7 %Message
  }
  elseif ($did == 9) {
    if (!$did(5).sel) var %x = $input(ERROR: You must select an entry to delete,wo,Invalid Selection) 
    elseif ($?!="Are you sure you want to delete this entry - $did(5).seltext ") {
      did -d Custom.Aways 5 $did(5).sel  
      did -d Custom.Aways 6 $did(6).sel  
      did -d Custom.Aways 7 $did(7).sel  
    }
  }
  elseif ($did == 10) {
    if (!$did(5).sel) { var %x = $input(ERROR: You must select an entry to edit,wo,Invalid Selection) | halt } 
    var %x
    var %trigger = $input(Enter new trigger for this preset,eoq,Input Request,$did(5).seltext)
    if ($numtok(%trigger,32) > 1) { %x = $input(ERROR: You must enter a single word trigger,wo,Invalid Input) | halt } 
    elseif (!%trigger) { %x = $input(ERROR: Trigger can not be null,wo,Invalid Input) | halt }   
    var %NickEdit = $input(Enter a new Prefix/Suffix for this preset,eoq,Input Request,$did(6).seltext)
    if (!%NickEdit) var %NickEdit = -
    elseif ($remove(%Nickedit,$chr(124),$chr(91),$chr(93),$chr(92),$chr(45),$chr(95),$chr(123),$chr(125)) !isalnum) { %x = $input(ERROR: Invalid Nick Characters detected,wo,Invalid Input,$did(7).seltext) | halt }
    var %Message = $input(Enter a new Away message for this preset,eoq,Input Request,$did(7).seltext)
    did -o Custom.Aways 5 $did(5).sel %trigger
    did -o Custom.Aways 6 $did(6).sel %NickEdit
    did -o Custom.Aways 7 $did(7).sel %Message
  }
} 
; ##############################################
; # Dialog Close Events                        #
; ##############################################
on *:dialog:Away:close:*: {
  if ($did(3).state == 1) && ($did(5)) writeini Settings.ini Away.Config NickPrefix $did(5)
  elseif ($did(4).state == 1) && ($did(5)) writeini Settings.ini Away.Config NickSuffix $did(5)
  else { 
    writeini Settings.ini Away.Config NickPrefix Away|
    writeini Settings.ini Away.Config NickSuffix |Away
  }
  writeini Settings.ini Away.Config AutoAway $iif($did(7).state == 0,off,on)
  writeini Settings.ini Away.Config AutoAwayTime $iif($did(8),$calc($did(8) * 60),900)
  writeini Settings.ini Away.Config LeavingTime $iif($did(11).state == 0,off,on)
  writeini Settings.ini Away.Config LeavingTimeFormat $iif($did(12),$did(12),HH:nn:ss)
  writeini Settings.ini Away.Config TimeAway $iif($did(14).state == 0,off,on)
  writeini Settings.ini Away.Config TimeAwayFormat $iif($did(15),$did(15),Shorts)
  writeini Settings.ini Away.Config ARChannelMessage $iif($did(19).state == 0,off,on)
  writeini Settings.ini Away.Config ARPrivateMessage $iif($did(20).state == 0,off,on)
  if ($did(25)) writeini Settings.ini Away.Config DefaultMessage $did(25)
  if ($readini(Settings.ini,Away.Config,AutoAway) == on) .timerAway.IdleCheck -o 0 30 Away.IdleCheck
  elseif ($timer(Away.IdleCheck)) .timerAway.IdleCheck off
}
on *:dialog:Custom.Aways:close:*: {
  var %x = 1, %lines = $did(5).lines
  while (%x <= %lines) {
    did -c Custom.Aways 5,6,7 %x
    writeini settings.ini Away.Config $+(Preset.,%x) $did(5).seltext $did(6).seltext $did(7).seltext
    inc %x
  }
  dec %x
  while (%x < 7) {
    inc %x
    if ($readini(settings.ini,Away.Config,$+(Preset.,%x))) remini Settings.ini Away.Config $+(Preset.,%x)
  }
}
; ##############################################
; # /Away And /back aliases                    #
; ##############################################
alias away {
  if ($group(#away) == on) { Echo -a 4>>> You are already Away | halt }
  ; ----- Unset Idle timer, Get highlights, enable #away group for logging etc
  if ($timer(Away.IdleCheck)) .timerAway.IdleCheck off
  Alias Away {
    if (%away == $null) {
      Away $1-
      set %reason $$?="Whats your reason For being AFK?"
      /amsg (»4,115 I am now away. Reason:8 %reason 15Left at:8 $time «) Game| scripts --
      //set %duration 0
      /inc -c %duration
      /set %away yes
      /window -w @Away
      /window -w @logger
      //echo @away %02This Window will show all the people who tried to talk to you, Please Do not close out of this Window!
      //echo @logger %02This Window Will Show the Log.
      /set %nick $me
      halt
    }
  }
  Alias Back {
    if (%back == $null) {
      /unset %away
      /amsg (»4,115 I am back from:8 %reason 15and I was away for:8 $duration(%duration) «) Game| scripts --
      %037,1§||§|\
      /unset %reason
      /unset %duration
      /nick %nick
      /unset %back
      /unset %people
      halt
    }
  }
  on *:text:*:#: {
    if (N3WB isin $1-) {
      if (%away == yes) {
        //notice $nick %02[AUTO-MSG]%02 %030,1$nick $+ ! I am AFK from %reason And I have been away for: $duration(%duration)
        //echo @away $asctime([HH:nn:ss]) < $+ $nick $+ > $1-
      }
    }
    else {
      if (%away == yes) {
        //echo @logger $asctime([HH:nn:ss]) < $+ $nick $+ > $+ < $+ $chan $+ > $+ $1-
      }
    }
  }