view tj.tcl @ 424:825cac46b1cb

Cosmetic / stray trailing whitespace cleanup.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 08 Jan 2017 03:55:55 +0200
parents a8954fd5cad5
children 4f2bf10ceaa2
line wrap: on
line source

##########################################################################
#
# TJ (Army Mornings Left-counter) v0.70 by ccr/TNSP <ccr@tnsp.org>
# (C) Copyright 2000,2009,2011 Tecnic Software productions (TNSP)
#
# 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.70 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} {
  set args [string trim [join $args ""]]
  if {$args == ""} { set args $hand }

  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_append { qlause qaika qstr qadd } {
  upvar $qlause lause
  if {$qaika > 0} {
    if {$lause != ""} { append lause $qadd }
    append lause $qstr
  }
}

# ------------------------------------------------------------------------
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 vuodet [expr ($tmp / (365*24*60*60))]
  set rem [expr ($tmp % (365*24*60*60))]
  set aamut [expr ($rem / (24*60*60))]
  set rem [expr ($rem % (24*60*60))]
  set tunnit [expr ($rem / (60*60))]

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

  set lause ""
  tj_append lause $vuodet "$vuodet vuotta" ""
  tj_append lause $aamut "$aamut aamua" ", "
  tj_append lause $tunnit "$tunnit tuntia" " ja "

  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])"
    }
  }

}

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