####################################################
# by wiebe @ QuakeNet
#
# requires gseen module for eggdrop
# http://www.visions-of-fantasy.de/eggdrop.php
#
# script can use: irc.tcl script.tcl
####################################################

####################################################
# seennick:help:pubm
####################################################
bind pubm fvlomn|fvlomn "% ${botnet-nick} help seennick" seennick:help:pubm
proc seennick:help:pubm { n u h c t } {
  if {[matchattr $h bkZ]} { return 0 }
  if {[string match *gseen* [modules]]} {
    lappend o "seennick: usage seennick <nick>"
    lappend o "seennick: shows seennick info for the given nick"
  } else { lappend o "seennick: gseen module does not appear to be loaded." }
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "seennick: " } }
  putloglev c $c "help: $n $u $h $c seennick"
  return 1
}


####################################################
# seennick:help:msgm
####################################################
bind msgm fvlomn|fvlomn "help seennick" seennick:help:msgm
proc seennick:help:msgm { n u h t } {
  if {![validchan $c]} { return 0 }
  if {[matchattr $h bkZ]} { return 0 }
  if {[string match *gseen* [modules]]} {
    lappend o "seennick: usage seennick <nick>"
    lappend o "seennick: shows seennick info for the given nick"
  } else { lappend o "seennick: gseen module does not appear to be loaded." }
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "seennick: " } }
  putcmdlog "($n!$u) !$h! help seennick"
  return 1
}


####################################################
# seen:pubm2
####################################################
bind pubm -|- "% ${botnet-nick} seennick" seennick:pubm2
bind pubm -|- "% ${botnet-nick} seennick *" seennick:pubm2
proc seennick:pubm2 { n u h c t } {
  if {![validchan $c]} { return 0 }
  if {[matchattr $h bkZ]} { return 0 }
  if {[matchattr $h fvlomn|fvlomn $c]} { return 0 }
  if {[expr [clock seconds] - [getchanjoin $n $c]] < 30 && ![isvoice $n $c] && ![ishalfop $n $c] && ![isop $n $c]} { return 0 }
  seennick:pubm $n $u $h $c $t
  return 1
}


####################################################
# seennick:pubm
####################################################
bind pubm fvlomn|fvlomn "% ${botnet-nick} seennick" seennick:pubm
bind pubm fvlomn|fvlomn "% ${botnet-nick} seennick *" seennick:pubm
proc seennick:pubm { n u h c t } {
  if {![validchan $c]} { return 0 }
  if {[matchattr $h bkZ]} { return 0 }
  set t [join [lrange [split $t] 2 end]]; set o ""
  if {![string match *gseen* [modules]]} {
    lappend o "seennick: gseen module does not appear to be loaded."
  } elseif {[string equal $t ""]} {
    lappend o "seennick: usage seennick <nick>"
  } else {
    set m [lindex [split [getchanmode $c]] 0]; set d 0
    if {![channel get $c quietseens]} { 
      if {[string match *m* $m] && ![botisop $c] && ![botishalfop $c] && ![botisvoice $c]} {
        set d 1
      } elseif {![matchattr $h fvlomn|fvlomn $c]} { set d 1 }
    }
    if {$d} { channel set $c +quietseens }
    *pub:!seennick $n $u $h $c $t
    if {$d} { channel set $c -quietseennicks }
  }
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "seennick: " } }
  putloglev c $c "seennick: $n $u $h $c $t"
  return 1
}


####################################################
# seennick:msg
####################################################
bind msg fvlomn|fvlomn seennick seennick:msg
proc seennick:msg { n u h t } {
  if {[matchattr $h bkZ]} { return 0 }
  set o ""; set r 1
  if {![string match *gseen* [modules]]} { lappend o "seennick: gseen module does not appear to be loaded."
  } elseif {[string equal $t ""]} { lappend o "seennick: usage seennick <nick>"
  } else { *msg:seennick $n $u $h $t; set r 0 }
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "seennick: " } }
  return $r
}


####################################################
# seennick:dcc
####################################################
bind dcc -|- seennick seennick:dcc
proc seennick:dcc { h i t } {
  set o ""
  if {![string match *gseen* [modules]]} {
    lappend o "seennick: gseen module does not appear to be loaded."
  } elseif {[string equal $t ""]} {
    lappend o "seennick: usage seennick <nick>"
    lappend o "seennick: shows seennick info for the given nick"
  } else {
    *dcc:seennick $h $i $t
  }
  foreach l $o { putidx $i $l }
  return 1
}


####################################################
# set info for script.tcl
####################################################
set ::scriptdb(seennick) {
  "provides seennick command for accessing gseen module seennick data"
}

