view tj.tcl @ 0:1c4e2814cd41

Initial import.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 21 Sep 2010 13:12:49 +0300
parents
children 5ac4fd6d011a
line wrap: on
line source

############################################################################
#
# TJ (Army Mornings Left-counter) v0.60 by ccr/TNSP
# (C) Copyright 2000,2009 Tecnic Software productions (TNSP)
# Send comments and shit via e-mail: <ccr@tnsp.org>
#
# This script is freely distributable under GNU GPL (version 2) license.
#
# Laskee aamuja tiettyyn paivamaaraan. TJ-paivamaara annettava
# tietenkin etta toimii, oletuksena skripti asettaa (uudelle kayttajalle)
# sen hetkisen ajan + 180 aamua. Esimerkkeja kaytosta:
# !tj [nick]
# /msg TheBot tj [nick]
#
# Ja TJ:n asetus toimii nain:
# !tjaamut <[-]aamujen lkm tasta hetkesta laskien> [+/- tunnit]
# !tjset dd.mm.yyyy hh:mm
#
############################################################################

# Default starting TJ
set tj_defstarttj 180



############################################################################
# No need to look below this line
############################################################################
set tj_message "TJ (SA-INT model) v0.60 by ccr/TNSP"
set tj_dateident "tjdate"
set tj_preferredmsg "PRIVMSG"

putlog "$tj_message"
bind pub - !tj tj_pubmsg
bind pub - !tjaamut tj_pubaamut
bind pub - !tjset tj_pubset

# -------------------------------------------------------------------------
proc tj_correctnickcase { jnick } {

  if {![validuser $jnick]} { return "" }
  set nicklwr [string tolower $jnick]
  foreach juser [userlist] {
    if {[string tolower $juser] == $nicklwr} {
      unset nicklwr
      return "$juser"
    }
  }

  return ""
}


# -------------------------------------------------------------------------
proc tj_smsg {udest umsg} {
  global tj_preferredmsg

  putserv "$tj_preferredmsg $udest :$umsg"
}


# -------------------------------------------------------------------------  
proc tj_pubmsg {nick uhost hand chan args} {
  if {$args == "{}" || $args == ""} { set args $hand }
  set args [lindex [split $args " "] 0]

  tj_smsg $chan [tj_gettj $args $chan]
  return 1
}


# -------------------------------------------------------------------------  
proc tj_ctime { utime } {
  return [clock format $utime -format "%d.%m.%Y %H:%M"]
}


# -------------------------------------------------------------------------  
proc tj_pubaamut {unick uhost uhand uchan uargs} {
  set foo [split $uargs " "]
  set tjdays [lindex $foo 0]
  set tjhours [lindex $foo 1]
  if {$tjdays == ""} {
    tj_smsg $uchan "Hälärm."
    return 1  
  }

  if {$tjhours == ""} { set tjhours 0 }

  set udate [expr [unixtime] + ($tjdays * 86400) + ($tjhours * 3600)]
  tj_smsg $uchan [tj_settj $uhand $unick $udate]
  return 1
}


# -------------------------------------------------------------------------  
proc tj_pubset {unick uhost uhand uchan uargs} {

  set udate [clock scan $uargs -format "%d.%N.%Y %H:%M"]
  tj_smsg $uchan [tj_settj $uhand $unick $udate]
  return 1
}


# -------------------------------------------------------------------------  
proc tj_settj { uuser unick udate } {
  global tj_dateident

  if {![validuser $uuser]} {
    return "Tuntematon käyttäjä $uuser."
  }

  setuser $uuser XTRA $tj_dateident $udate
  return "$unick:n ($uuser) TJ asetettu. ([tj_ctime $udate])"
}


# -------------------------------------------------------------------------  
proc tj_gettj {ihandle ichan} {
  global tj_defstarttj
  global tj_dateident

  # Tarkistetaan onko kayttaja OK
  if {![validuser $ihandle]} {
    if {$ichan == ""} {
      return "$ihandle, Mene pois."
    } else {
      if {$ihandle == "*"} {
        return "En tiedä kuka olet, mene pois."
      } else {
        return "En tiedä kuka $ihandle on."
      }
    }
  }

  set chandle [tj_correctnickcase $ihandle]

  # Haetaan TJ aloitus paivamaara
  set tjpaiva [getuser $chandle XTRA $tj_dateident]
  
  if {$tjpaiva == ""} {
    return "$chandle ei ole asettanut itselleen TJ päivämäärää."
  }

  # Lasketaan tamanhetkinen TJ aika
  set deltatj [expr $tjpaiva - [unixtime]]

  if {$deltatj < 0} { 
    set tmp [expr [unixtime] - $tjpaiva]
  } else {
    set tmp $deltatj
  }

  # Lasketaan TJ aamut, tunnit jne
  set aamut [expr ($tmp / 86400)]
  set tunnit [expr (($tmp % 86400) / 3600)]

  # Maaritetaan sanalause
  if {$ichan != ""} {
    set tjmt "$chandle:lla on"
    set tjmi "$chandle on"
  } else {
    set tjmt "Sinulla on"
    set tjmi "Sinä olet"
  }

  if {$aamut > 0} {
    set lause "$aamut aamua"
  } else {
    set lause ""
  }

  if {$tunnit > 0} {
    if {$aamut > 0} { set lause "$lause ja" }
    set lause "$lause $tunnit tuntia"
  }

  if {$aamut == 0 && $deltatj > 0} {
    if {$tunnit == 0} {  
      return "$tjmt TOSI WÄINÖ! TJ 0!!"
    } else {
      return "$tjmt AIKA WÄBÄ -- TJ $tunnit tuntia!"
    }
  } else {
    if {$deltatj > 0} {
      return "$tjmt $lause jäljellä... ([tj_ctime $tjpaiva])"
    } else {
      return "$tjmi ollut reservissä jo $lause! ([tj_ctime $tjpaiva])"
    }
  }

}

# -------------------------------------------------------------------------