Code: Select all
bind msg -|- away cmd:away
bind msg -|- return cmd:return
proc cmd:away {nick uhost hand arg} {
set reason $arg
putserv "AWAY :$arg"
}
proc cmd:return {nick uhost hand arg} {
putserv "AWAY"
puthelp "NOTICE $nick :$::botnick is no longer marked as away"
}
Code: Select all
bind msg -|- away cmd:away
bind msg -|- return cmd:return
Code: Select all
set reason [lrange [split $arg] 0 end]
Code: Select all
set reason $arg
Code: Select all
set username [lrange [split $arg] 0 end]
putserv "AWAY"
puthelp "NOTICE $nick $username Is no longer marked as away"
Code: Select all
putserv "AWAY"
puthelp "NOTICE $nick :$::botnick is no longer marked as away"
Code: Select all
proc cmd:away {nick uhost hand arg} {
putserv "AWAY :$arg"
}
Try this script from the archive botaway.tcldec wrote:thank you so much everyone..
the script work great..
i need help again for my bot script..
when i whois the bot, the information say something like this :
UP|DOWN is auto@irc.mynetwork.org
UP|DOWN on #mychannel
UP|DOWN using irc.mynetwork.org
UP|DOWN is away: Offline.. [UpTImE 09:21 Hrs]
UP|DOWN End of /WHOIS list.
i need the script for bot uptime information shown in away..
thank you so much..
Code: Select all
# botaway.tcl v1.14 [1 August 2000]
# Copyright (C) 1999-2000 Teemu Hjelt <temex@iki.fi>
#
# Latest version can be found from http://www.iki.fi/temex/eggdrop/
#
# If you have any suggestions, questions or you want to report
# bugs, please feel free to send me email to temex@iki.fi
#
# With this script you can set your bot away.
#
# Current DCC Commands:
# .botaway, .botback, .autoaway
#
# Tested on eggdrop1.4.4 with TCL 7.6
#
# Version history:
# v1.00 - The very first version!
# v1.01 - Added the missing commands to away-help.
# v1.10 - Changed the name of this script from away.tcl to botaway.tcl
# Modified .away to .botaway, because .away was already in use.
# Now you can select is the message log either ON or OFF. You can
# also select what kind of away message do you want. Added more of
# those "stupid" away reasons, fixed some big bugs and divided settings
# in to two sections. Also fixed bug with away reasons that contain chars
# like { } [ ] $ \ "
# v1.11 - Renamed the procs & fixed some cosmetic things.
# v1.12 - Now you can select the channels where the bot shows the away-actions.
# v1.13 - Had to change time command to strftime, because v1.4.0 doesn't support
# time and date commands anymore.
# v1.14 - Changed the names of the commands and the actual away time is now used.
### General Settings ###
## [0/1/2] What kind of away message do you want?
# 0 - Normal
# 1 - BitchX
# 2 - ScrollZ
set ba_style 1
## [0/1] Enable this is if you want the message log to be ON in the away message.
# Note: This only works when ba_style is set to 1 or 2.
set ba_logon 1
## [0/1] Show an action on $ba_actchans when you set your bot away or back?
# Note: This only works when ba_style is set to 1 or 2.
set ba_showaction 1
## What users can set the bot away/back and enable/disable AutoAway?
set ba_flag "m"
## On what channels do you want to show the away-actions?
# Note: Set this to "" to show the away-actions on all channels.
set ba_actchans "#lamest #botcentral"
### Autoaway Settings ###
## [0/1] Enable Autoaway?
set ba_autoaway 1
## [0/1] Show an action on $ba_actchans when autoaway sets your bot away or back?
# Note: This only works when ba_style is set to 1 or 2.
set ba_autoaction 0
## [0/1] Enable this if you want the bot to log when it was set away or back by autoaway.
set ba_autolog 1
## [0/1] Enable this if you want the autoaway to randomly choose whether it sets your bot away or back.
set ba_rand 1
## [0/1] Enable this if you want to have a random interval for autoaway.
set ba_randint 1
## What is the maximum time of waiting before setting away in random interval (mins)?
set ba_maxdelay 40
## What is the minimum time of waiting before setting away in random interval (mins)?
set ba_mindelay 5
## If you haven't enabled $ba_randint then what interval do you want to use (mins)?
set ba_interval 40
###### You don't need to edit below this ######
### Misc Things ###
set ba_ver "1.14"
if {![info exists ba_isaway]} { set ba_isaway 0 }
if {![info exists ba_awaytime]} { set ba_awaytime 0 }
### Random AwayReasons ###
set ba_reasons {
"Auto-Away after 10 mins"
"Auto-Away after 20 mins"
"Automatically set away"
"Eating"
"Gone"
"Not here"
"Not here. Use e-mail."
"Not here. Use snail mail."
"Somewhere"
"Coming back soon"
"Watching TV"
"Listening to radio"
"Listening to records"
"Reading"
"Surfing"
"Surfing in the web."
"Sleeping"
"idling"
"Doing homeworks"
"Taking a bath"
"Cleaning room"
"Playing guitar"
"Playing piano"
"Playing tennis"
"Playing basketball"
"Playing badminton"
"Playing ice-hockey"
"Go away!"
"Don't disturb me!"
"err..."
}
### Bindings ###
bind dcc $ba_flag autoaway dcc:ba_autoaway
bind dcc $ba_flag botaway dcc:ba_botaway
bind dcc $ba_flag botback dcc:ba_botback
### Main Procs ###
proc dcc:ba_autoaway {hand idx arg} {
global botnick ba_ver ba_autoaway
set option [string tolower [lindex $arg 0]]
putcmdlog "#$hand# autoaway $arg"
switch -exact -- $option {
"" {
if {$ba_autoaway} {
putidx $idx "Autoaway is enabled."
putidx $idx "You can disable it by typing: .autoaway -disable"
} else {
putidx $idx "Autoaway is disabled."
putidx $idx "You can enable it by typing: .autoaway -enable"
}
}
"-enable" {
if {!$ba_autoaway} {
ba_stopauto
ba_startauto
set ba_autoaway 1
putidx $idx "Autoaway enabled."
} else {
putidx $idx "Autoaway is already enabled."
}
}
"-disable" {
if {$ba_autoaway} {
ba_stopauto
set ba_autoaway 0
putidx $idx "Autoaway disabled."
} else {
putidx $idx "Autoaway is already disabled."
}
}
"default" {
putidx $idx "Usage: .autoaway \[-enable/-disable\]"
}
}
}
proc dcc:ba_botaway {hand idx arg} {
global botnick ba_reasons ba_autoaway ba_showaction
set reason [join [lrange [split $arg] 0 end]]
putcmdlog "#$hand# botaway $arg"
if {$reason == ""} { set reason [lindex $ba_reasons [rand [llength $ba_reasons]]] }
set reason [ba_getreason $reason]
if {$ba_autoaway} { ba_stopauto }
if {$ba_showaction} { ba_awayaction $reason }
putidx $idx "$botnick was set away - $reason"
ba_setaway $reason
}
proc dcc:ba_botback {hand idx arg} {
global botnick ba_autoaway ba_showaction ba_awaytime
putcmdlog "#$hand# botback $arg"
if {$ba_autoaway} { ba_startauto }
if {$ba_showaction} { ba_backaction }
if {$ba_awaytime == 0} {
putidx $idx "$botnick was set back."
} else {
putidx $idx "$botnick was set back. Bot was away [ba_duration [expr [unixtime] - $ba_awaytime]]"
}
ba_setback
}
### Other Procs ###
proc ba_awayaction {reason} {
global ba_style ba_actchans
if {$ba_style == 1} {
foreach chan [channels] {
if {($ba_actchans != "") && ([lsearch -exact [split [string tolower $ba_actchans]] [string tolower $chan]] == -1)} { continue }
putserv "PRIVMSG $chan :\001ACTION $reason\001"
}
} elseif {$ba_style == 2} {
foreach chan [channels] {
if {($ba_actchans != "") && ([lsearch -exact [split [string tolower $ba_actchans]] [string tolower $chan]] == -1)} { continue }
putserv "PRIVMSG $chan :\001ACTION is away. $reason\001"
}
}
}
proc ba_backaction {} {
global ba_style ba_actchans ba_awaytime
if {$ba_style == 1} {
set awaytime [ba_duration [expr [unixtime] - $ba_awaytime]]
foreach chan [channels] {
if {($ba_actchans != "") && ([lsearch -exact [split [string tolower $ba_actchans]] [string tolower $chan]] == -1)} { continue }
putserv "PRIVMSG $chan :\001ACTION is back from the dead. Gone $awaytime\001"
}
} elseif {$ba_style == 2} {
foreach chan [channels] {
if {($ba_actchans != "") && ([lsearch -exact [split [string tolower $ba_actchans]] [string tolower $chan]] == -1)} { continue }
putserv "PRIVMSG $chan :\001ACTION is back. \002What was going on ?\002 \[SZ\002off\002\]\001"
}
}
}
proc ba_setaway {reason} {
global ba_style ba_isaway ba_awaytime
if {$ba_style == 2} { append reason " Away since [strftime "%a %b %d %H:%M"]" }
set ba_awaytime [unixtime]
set ba_isaway 1
putserv "AWAY :$reason"
}
proc ba_setback { } {
global ba_isaway ba_awaytime
set ba_awaytime 0
set ba_isaway 0
putserv "AWAY :"
}
proc ba_doaway { } {
global botnick ba_reasons ba_rand ba_isaway ba_autoaction ba_autolog ba_awaytime
set reason [ba_getreason [lindex $ba_reasons [rand [llength $ba_reasons]]]]
if {$ba_rand} {
if {[rand 2]} {
if {!$ba_isaway} {
if {$ba_autoaction} { ba_awayaction $reason }
if {$ba_autolog} { putlog "botaway: $botnick was set away - $reason" }
ba_setaway $reason
}
} else {
if {$ba_isaway} {
if {$ba_autoaction} { ba_backaction }
if {$ba_autolog} {
if {$ba_awaytime == 0} {
putlog "$botnick was set back."
} else {
putlog "$botnick was set back. Bot was away [ba_duration [expr [unixtime] - $ba_awaytime]]"
}
}
ba_setback
}
}
} else {
if {!$ba_isaway} {
if {$ba_autoaction} { ba_awayaction $reason }
if {$ba_autolog} { putlog "botaway: $botnick was set away - $reason" }
ba_setaway $reason
} else {
if {$ba_autoaction} { ba_backaction }
if {$ba_autolog} {
if {$ba_awaytime == 0} {
putlog "$botnick was set back."
} else {
putlog "$botnick was set back. Bot was away [ba_duration [expr [unixtime] - $ba_awaytime]]"
}
}
ba_setback
}
}
ba_startauto
}
proc ba_startauto { } {
global ba_randint ba_interval ba_maxdelay ba_mindelay
if {![string match "*ba_doaway*" [timers]]} {
if {$ba_randint} {
timer [expr [rand $ba_maxdelay] + $ba_mindelay +1] ba_doaway
} else {
timer $ba_interval ba_doaway
}
}
}
proc ba_stopauto { } {
foreach timer [timers] {
if {[string match "*ba_doaway*" $timer]} {
killtimer [lindex $timer 2]
}
}
}
proc ba_duration {seconds} {
set h [expr $seconds/3600]
set m [expr $seconds/60 - $h*60]
set s [expr $seconds - $m*60 - $h*3600]
return "[lindex [split $h] 0] hrs [lindex [split $m] 0] min [lindex [split $s] 0] secs"
}
proc ba_getreason {reason} {
global ba_style ba_logon
if {($ba_style == 1) && ($ba_logon)} { set reason "is away: (${reason}) \[\002BX\002-MsgLog On\]" }
if {($ba_style == 1) && (!$ba_logon)} { set reason "is away: (${reason}) \[\002BX\002-MsgLog Off\]" }
if {($ba_style == 2) && ($ba_logon)} { set reason "\002${reason}\002 \[SZ\002on\002\]" }
if {($ba_style == 2) && (!$ba_logon)} { set reason "\002${reason}\002 \[SZ\002off\002\]" }
return $reason
}
### End ###
if {$ba_autoaway} { ba_startauto }
putlog "TCL loaded: botaway.tcl v$ba_ver by Sup <temex@iki.fi>"
Here's your problem. Your away status is an IRCD response. In such, you can set a STATIC message for your away status. There is no computation done on it that could generate an uptime response. This is why the majority of scripts merely set an away since. To know the uptime would require a script on the client side, which reads the bots away since date/time, converts this to an usable format, and compares against the clients present date/time and generates the uptime reply.dec wrote:hai blake
thanks for helping me so much.
i've try the script but only tell the away start (ex. Away since Sat Jan 09 04:11) not the Uptime information.
if you have another tcl which is bring me to this uptime info bot
mention on the away reason it would be great.
thank you so much *big cookie for you*
hai there speechles,speechles wrote: To know the uptime would require a script on the client side, which reads the bots away since date/time, converts this to an usable format, and compares against the clients present date/time and generates the uptime reply.
Code: Select all
set notd "«« Guard Bot »»"
set notc "«« Guard Bot »»"
set vern "Ver. 1.2b"
set awaym {
"i'm away"
"i'm gone"
}
bind time - "*0 * * * *" chk_five
bind time - "*6 * * * *" chk_five
proc chk_five {min h d m y} {
global longer deff
catch { remain }
if {![string match "**" $longer]} {
set longer "$deff"
}
puthlp "AWAY :$longer"
auto_ping "0" "0" "0" "0" "0"
}
proc remain {} {
global botnick uptime timezone notc notd vern longer awaym
set totalyear [expr [unixtime] - $uptime]
if {$totalyear >= 31536000} {
set yearsfull [expr $totalyear/31536000]
set years [expr int($yearsfull)]
set yearssub [expr 31536000*$years]
set totalday [expr $totalyear - $yearssub]
}
if {$totalyear < 31536000} {
set totalday $totalyear
set years 0
}
if {$totalday >= 86400} {
set daysfull [expr $totalday/86400]
set days [expr int($daysfull)]
set dayssub [expr 86400*$days]
set totalhour [expr $totalday - $dayssub]
}
if {$totalday < 86400} {
set totalhour $totalday
set days 0
}
if {$totalhour >= 3600} {
set hoursfull [expr $totalhour/3600]
set hours [expr int($hoursfull)]
set hourssub [expr 3600*$hours]
set totalmin [expr $totalhour - $hourssub]
}
if {$totalhour < 3600} {
set totalmin $totalhour
set hours 0
}
if {$totalmin >= 60} {
set minsfull [expr $totalmin/60]
set mins [expr int($minsfull)]
}
if {$totalmin < 60} {
set mins 0
}
if {$years < 1} {set yearstext ""} elseif {$years == 1} {set yearstext "$years year, "} {set yearstext "$years years, "}
if {$days < 1} {set daystext ""} elseif {$days == 1} {set daystext "$days day, "} {set daystext "$days days, "}
if {$hours < 1} {set hourstext ""} elseif {$hours == 1} {set hourstext "$hours HoUR, "} {set hourstext "$hours HoURS, "}
if {$mins < 1} {set minstext ""} elseif {$mins == 1} {set minstext "$mins MiNuTE"} {set minstext "$mins MiNuTES"}
if {[string length $mins] == 1} {set mins "0${mins}"}
if {[string length $hours] == 1} {set hours "0${hours}"}
set output "${yearstext}${daystext}${hours}:${mins}"
set output [string trimright $output ", "]
if {[getuser "config" XTRA "AWAY"]!=""} {
set longer "[lgrnd] $vern \[UpTImE $output Hrs\] ([getuser "config" XTRA "AWAY"])"
} {
set awaymsg [lindex $awaym [rand [llength $awaym]]]
set longer "[lgrnd] $vern \[UpTImE $output Hrs\] 7(6$awaymsg7)"
}
}
Code: Select all
######################################################################
# Uptime on Awaymsg By JoJo - #Botmaster Allnetwork
# hillzx@gmail.com
# Version 1.0
# 3 Feb 2010
######################################################################
bind pub - "uptime" pub:ambiluptime
set jammulai [unixtime]
set vern "3«« 1Amuni§ì C®ew 3»»1"
set awaym {
"Lagi PeRangZ Ma IrCopz!"
"belajar Bikinz Scriptz!!"
"BoBo NyeNyakZ!!"
"perGi Ke SekoLahz"
"Epon YaYaNkz"
"Mandi Kramasz"
"KangeN MaMa"
"bIkin Webz"
"Em Elz"
"bIkin Adikz"
"MojOk aMa yaYangz"
"LaGi NontOnz IteNAz"
"SurFinGz 17tahun.Comz"
"ngaskus dulu juragan"
"ngopi-ngopi dulu ah"
"olah raga malem"
"saatnya ikutan kuis"
"syuting film"
"cari gebetan"
}
proc pub:pengecekan {} {
global jammulai awaym vern
set jamsaatini [unixtime]
set uptimesekarang [return:uptime $jammulai $jamsaatini]
set readabletime [konversidurasi $uptimesekarang]
set awaymsg [lindex $awaym [rand [llength $awaym]]]
putserv "AWAY"
putserv "AWAY :$awaymsg - \[UpTImE for $readabletime\] - $vern"
timer [expr 1] pub:pengecekan
}
proc pub:ambiluptime { nick uhost hand chan text } {
global jammulai vern
set jamsaatini [unixtime]
set uptimesekarang [return:uptime $jammulai $jamsaatini]
set readabletime [konversidurasi $uptimesekarang]
#putserv "PRIVMSG $chan :Bot mulai hidup dalam UNIXtime $jammulai"
#putserv "PRIVMSG $chan :Jam saat ini dalam UNIXtime $jamsaatini"
#putserv "PRIVMSG $chan :Jumlah pengurangan dalam detik : $uptimesekarang"
putserv "PRIVMSG $chan :\[UpTImE for $readabletime\] - $vern"
}
proc return:uptime { starts ends } {
set value [expr $ends - $starts]
return $value
}
proc konversidurasi {seconds} {
set h [expr $seconds/3600]
set m [expr $seconds/60 - $h*60]
set s [expr $seconds - $m*60 - $h*3600]
return "[lindex [split $h] 0] HOuRs [lindex [split $m] 0] MiNuTes [lindex [split $s] 0] SecoNds"
}
set init-server {
global jammulai
set jammulai [unixtime]
pub:pengecekan
}
putlog "Uptime on Awaymsg By JoJo"