#!/usr/bin/tclsh
# funwar script
# have fun ;)
package require sql
# sql stuff:
set funwar_sql_server "server.ip.add.ress"
set funwar_sql_user "username"
set funwar_sql_password "password"
set funwar_sql_dbname_et "name of database"
set funwar_sql_dbname_rtcw "name of database"
set funwar_sql_tblname_et "name of table"
set funwar_sql_tblname_rtcw "name of table"
# where the bot should post funwars automatically:
set funwar_channels_auto "#example #test"
# how often should funwars be posted in the above specified channels?
# bind time - "MIN HOUR DAY MONTH YEAR" funwar_auto
# for example:
# bind time - "20 * * * *" funwar auto
# bind time - "50 * * * *" funwar auto
# (posts at 20 and 50 minutes every hour/day/month/year)
bind time - "20 * * * *" funwar_auto
bind time - "50 * * * *" funwar_auto
# which triggers should be used?
set funwar_trigger_et "!et"
set funwar_trigger_rtcw "!rtcw"
set funwar_trigger_both "!funwars"
# what should the output look like?
set funwar_output_header "*** Funwars: ***"
set funwar_output_header2 "Game: Date/Time: XonX: Clantag: IRC:"
set funwar_output_footer "*** end of funwars list ***"
#
proc funwar_post {game id date time xonx clantag irc www server org chan } {
#
set funwar_output_body "$game $date $xonx $clantag $irc"
#
puthelp "PRIVMSG $chan :$funwar_output_body"
}
#
# you shouldnīt change anything below except your really want to modify something!!!
global funwar_sql_server
global funwar_sql_user
global funwar_sql_passwd
global funwar_sql_dbname_et
global funwar_sql_dbname_rtcw
global funwar_sql_tblname_et
global funwar_sql_tblname_rtcw
global funwar_output_header
global funwar_output_header2
global funwar_output_footer
global funwar_channels_auto
proc funwar_sql_parsedb { server user password dbname tblname order chan game limit command} {
global funwar_output_header
global funwar_output_header2
global funwar_output_footer
set counter "1"
set conn [ sql connect $server $user $password ]
set res [ catch { sql selectdb $conn $dbname } msg ]
if { $res != 0 } {
puthelp "PRIVMSG $chan :Sorry, could not select the database '$dbname': $msg"
}
set res [ sql query $conn "select id,date,time,xonx,clantag,irc,www,server,org from $tblname order by $order desc" ]
if { $res != 0 } {
if { $command != "noheader" } {
if { [llength $chan] == 1 } {
puthelp "PRIVMSG $chan :$funwar_output_header"
puthelp "PRIVMSG $chan :$funwar_output_header2"
} else {
foreach channel $chan {
puthelp "PRIVMSG $channel :$funwar_output_header"
puthelp "PRIVMSG $channel :$funwar_output_header2"
}
}
}
while { [ set row [ sql fetchrow $conn ] ] != "" } {
set id [lindex $row 0]
set date [lindex $row 1]
set time [lindex $row 2]
set xonx [lindex $row 3]
set clantag [lindex $row 4]
set irc [lindex $row 5]
set www [lindex $row 6]
set server [lindex $row 7]
set org [lindex $row 8]
if { $counter <= $limit } {
if { [llength $chan] == 1 } {
funwar_post $game $id $date $time $xonx $clantag $irc $www $server $org $chan
} else {
foreach channel $chan {
funwar_post $game $id $date $time $xonx $clantag $irc $www $server $org $channel
}
}
}
incr counter
}
if { $command != "nofooter" } {
if { [llength $chan] == 1 } {
puthelp "PRIVMSG $chan :$funwar_output_footer"
} else {
foreach channel $chan {
puthelp "PRIVMSG $channel :$funwar_output_footer"
}
}
}
}
sql endquery $conn
sql disconnect $conn
}
proc funwar_rtcw { nick host hand chan arg } {
global funwar_sql_server
global funwar_sql_user
global funwar_sql_password
global funwar_sql_dbname_rtcw
global funwar_sql_tblname_rtcw
set order "id"
set game "RTCW"
set limit "10"
set command ""
funwar_sql_parsedb $funwar_sql_server $funwar_sql_user $funwar_sql_password $funwar_sql_dbname_rtcw $funwar_sql_tblname_rtcw $order $chan $game $limit $command
}
proc funwar_et { nick host hand chan arg } {
global funwar_sql_server
global funwar_sql_user
global funwar_sql_password
global funwar_sql_dbname_et
global funwar_sql_tblname_et
set order "id"
set game "ET"
set limit "10"
set command ""
funwar_sql_parsedb $funwar_sql_server $funwar_sql_user $funwar_sql_password $funwar_sql_dbname_et $funwar_sql_tblname_et $order $chan $game $limit $command
}
proc funwar_both { nick host hand chan arg } {
global funwar_sql_server
global funwar_sql_user
global funwar_sql_password
global funwar_sql_dbname_rtcw
global funwar_sql_tblname_rtcw
global funwar_sql_dbname_et
global funwar_sql_tblname_et
set order "id"
set game "RTCW"
set limit "3"
set command "nofooter"
funwar_sql_parsedb $funwar_sql_server $funwar_sql_user $funwar_sql_password $funwar_sql_dbname_rtcw $funwar_sql_tblname_rtcw $order $chan $game $limit $command
set game "ET"
set command "noheader"
funwar_sql_parsedb $funwar_sql_server $funwar_sql_user $funwar_sql_password $funwar_sql_dbname_et $funwar_sql_tblname_et $order $chan $game $limit $command
}
proc funwar_auto { min hour day month year } {
global funwar_channels_auto
global funwar_sql_server
global funwar_sql_user
global funwar_sql_password
global funwar_sql_dbname_rtcw
global funwar_sql_tblname_rtcw
global funwar_sql_dbname_et
global funwar_sql_tblname_et
global funwar_channels_auto
set order "id"
set game "RTCW"
set limit "3"
set command "nofooter"
funwar_sql_parsedb $funwar_sql_server $funwar_sql_user $funwar_sql_password $funwar_sql_dbname_rtcw $funwar_sql_tblname_rtcw $order $funwar_channels_auto $game $limit $command
set game "ET"
set command "noheader"
funwar_sql_parsedb $funwar_sql_server $funwar_sql_user $funwar_sql_password $funwar_sql_dbname_et $funwar_sql_tblname_et $order $funwar_channels_auto $game $limit $command
}
bind pub - $funwar_trigger_et funwar_et
bind pub - $funwar_trigger_rtcw funwar_rtcw
bind pub - $funwar_trigger_both funwar_both
putlog "Loaded funwars.tcl"