All pastes #151117 Raw Edit

Multi-Channel Poll

public text v1 · immutable
#151117 ·published 2006-08-27 18:23 UTC
rendered paste body
ALIAS EndPoll {
  VAR %pollhash = $+(Poll.,$1)
  IF ($hget(%pollhash)) {
    msg $1 Poll $qt($hget(%pollhash,Question)) has Ended.
    msg $1 Results: $+(,$hget(%pollhash,Yes),) People Voted Yes, $+(,$hget(%pollhash,No),) People Voted No.
    hfree %pollhash
  }
}

ON *:JOIN:#:{
  VAR %pollhash = $+(Poll.,$chan), %output = .notice $nick [04Poll]:
  IF (($hget(%pollhash)) && (!$hget(%pollhash,$address($nick,3)))) {
    %output There is currently a Poll to vote on, created by $hget(%pollhash,Started)
    %output Poll Question: $hget(%pollhash,Question)
    %output Use !vote no or !vote yes to place your vote.
  }
}

ON *:TEXT:*:#:{
  VAR %pollhash = $+(Poll.,$chan), %output = .notice $nick [04Poll]:
  IF ($regex($1-2,/^[!@.](Vote|Poll).(Start|Begin|New)$/Si)) {
    IF (($nick !isop $chan) && ($nick !ishop $chan)) return
    IF ($hget(%pollhash)) { %output There is already a Poll running on $chan $+ , Please end it before starting a new one. | return }
    IF ($3 !isnum) { %output Usage: !poll start <minutes> <question> | return }
    hadd -m %pollhash Question $4-
    hadd -m %pollhash Started $nick
    hadd -m %pollhash Yes 0
    hadd -m %pollhash No 0
    $+(.timerpoll,$chan) 1 $calc($3 * 60) EndPoll $chan
    msg $chan $3 Minute Poll: $qt($4-) - Started By: $nick
    msg $chan To Vote: !vote yes or !vote no
  }
  ELSEIF ($regex($1-2,/^[!@.](Vote|Poll).(Stop|End|Halt)$/Si)) {
    IF (($nick !isop $chan) && ($nick !ishop $chan)) return
    IF (!$hget(%pollhash)) { %output There is no poll open for $chan $+ ! | return }
    EndPoll $chan
  }
  ELSEIF ($regex($1-2,/^[!@.]Vote.(Yes|No)$/Si)) {
    IF (!$hget(%pollhash)) { %output There is no Poll open for $chan $+ ! | return }
    IF ($hget(%pollhash,$address($nick,3))) { %output You've already voted $upper($ifmatch) for this Poll! | return }
    %output You have now voted $+(,$upper($2),) for this Poll.
    hadd -m %pollhash $address($nick,3) $2
    hinc -m %pollhash $2
  }
}