All pastes #727752 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-06 10:29 UTC
rendered paste body
# pubcom.tcl

# ----- Configuration ----- #

# set here the public command trigger
set vPubTrigger !

# set here user flags to use the command(s) reset
set vPubFlagHigh n

# set here user flags required to use the command(s) ban, kick, op, deop
set vPubFlagMed m|m

# set here user flags required to use the command(s) voice, devoice
set vPubFlagLow o|o

# set here the ban time in minutes (0 means permanent)
set vPubBanTime 2

# ********************************************** #
# ***** Code - Do Not Edit Below This Line ***** #
# ********************************************** #

# ----- Initialise ----- #

proc pPubTrigger {} {
  global vPubTrigger
  return $vPubTrigger
}

# ----- Binds ----- #

bind PUB $vPubFlagMed [pPubTrigger]ban pPubBan
bind PUB $vPubFlagMed [pPubTrigger]deop pPubDeop
bind PUB $vPubFlagMed [pPubTrigger]kick pPubKick
bind PUB $vPubFlagMed [pPubTrigger]op pPubOp

bind PUB $vPubFlagLow [pPubTrigger]devoice pPubDevoice
bind PUB $vPubFlagLow [pPubTrigger]voice pPubVoice

bind PUB $vPubFlagHigh [pPubTrigger]reset pPubCountReset

# ----- Bind Procs ----- #

proc pPubBan {nick uhost hand chan text} {
  global vPubBanTime
  set text [string trim $text]
  if {[llength [split $text]] == 1} {
    if {[onchan $text $chan]} {
      if {[botisop $chan]} {
        set hostmask $text!*@[join [lindex [split [getchanhost $text] @] 1]]
        set bancount [pPubBanRead]
        incr bancount
        pPubBanWrite $bancount
        newchanban $chan $hostmask $nick "requested by $nick - ban number #$bancount" $vPubBanTime
      }
    }
  }
  return 0
}

proc pPubDeop {nick uhost hand chan text} {
  set text [string trim $text]
  if {[llength [split $text]] == 1} {
    if {[onchan $text $chan]} {
      if {[botisop $chan]} {
        if {[isop $text $chan]} {
          pushmode $chan -o $text
          flushmode $chan
        }
      }
    }
  }
  return 0
}

proc pPubDevoice {nick uhost hand chan text} {
  set text [string trim $text]
  if {[llength [split $text]] == 1} {
    if {[onchan $text $chan]} {
      if {[botisop $chan]} {
        if {[isvoice $text $chan]} {
          pushmode $chan -v $text
          flushmode $chan
        }
      }
    }
  }
  return 0
}

proc pPubKick {nick uhost hand chan text} {
  set text [string trim $text]
  if {[llength [split $text]] == 1} {
    if {[onchan $text $chan]} {
      if {[botisop $chan]} {
        set kickcount [pPubKickRead]
        incr kickcount
        pPubKickWrite $kickcount
        putkick $chan $text "requested by $nick - kick number #$kickcount"
      }
    }
  }
  return 0
}

proc pPubOp {nick uhost hand chan text} {
  set text [string trim $text]
  if {[llength [split $text]] == 1} {
    if {[onchan $text $chan]} {
      if {[botisop $chan]} {
        if {![isop $text $chan]} {
          pushmode $chan +o $text
          flushmode $chan
        }
      }
    }
  }
  return 0
}

proc pPubCountReset {nick uhost hand chan text} {
  set text [string trim $text]
  if {[llength [split $text]] == 0} {
    set count 0
    set id [open bcount.txt w]
    puts $id $count
    close $id
    set id [open kcount.txt w]
    puts $id $count
    close $id
    putserv "PRIVMSG $chan :kick and ban counts reset to 0"
  }
  return 0
}

proc pPubVoice {nick uhost hand chan text} {
  set text [string trim $text]
  if {[llength [split $text]] == 1} {
    if {[onchan $text $chan]} {
      if {[botisop $chan]} {
        if {![isvoice $text $chan]} {
          pushmode $chan +v $text
          flushmode $chan
        }
      }
    }
  }
  return 0
}

# ----- Defined Procs ----- #

proc pPubBanRead {} {
  if {[file exists bcount.txt]} {
    set id [open bcount.txt r]
    gets $id bancount
    if {![string is integer -strict $bancount]} {
      set bancount 0
    }
    close $id
  } else {
    set bancount 0
  }
  return $bancount
}
 
proc pPubKickRead {} {
  if {[file exists kcount.txt]} {
    set id [open kcount.txt r]
    gets $id kickcount
    if {![string is integer -strict $kickcount]} {
      set kickcount 0
    }
    close $id
  } else {
    set kickcount 0
  }
  return $kickcount
}
 
proc pPubBanWrite {bancount} {
  set id [open bcount.txt w]
  puts $id $bancount
  close $id
  return 0
} 
 
proc pPubKickWrite {kickcount} {
  set id [open kcount.txt w]
  puts $id $kickcount
  close $id
  return 0
} 
 
# ----- Acknowledgement ----- #

putlog "Pubcom.tcl Loaded"

# eof