This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

[SOLVE] request script - away with output time

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
d
dec
Voice
Posts: 12
Joined: Thu Nov 26, 2009 2:37 pm

[SOLVE] request script - away with output time

Post by dec »

could someone help me with this script..
away : go fisihing for 2 Days 2 Hours 33 Minutes
and also with multiaway messages..
thank you so much.
Last edited by dec on Sat Feb 06, 2010 4:55 pm, edited 1 time in total.
b
blake
Master
Posts: 201
Joined: Mon Feb 23, 2009 9:42 am
Contact:

Post by blake »

This will partially do what you want im not sure how to set output time maybe someone else can add that

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"
}
replace this with the flags you require

Code: Select all

bind msg -|- away cmd:away
bind msg -|- return cmd:return
Commands work in private message to your bot
ie away Gone fishing -sets your away status

return This will set your bot as no longer away

Code changed due to recommendations of nml and speechless
Last edited by blake on Sat Dec 05, 2009 2:03 pm, edited 6 times in total.
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

blake,
You probably want to prefix the message of the notice command with a :
Also, I don't see why you use [lrange [split $arg] 0 end].
lrange with indexes 0 and end would only return the actual list you started with, and I'm not sure why you convert $arg into a list in the first place either...
NML_375
b
blake
Master
Posts: 201
Joined: Mon Feb 23, 2009 9:42 am
Contact:

Post by blake »

I wouldnt have a clue im a begginer at tcl and thats saying something its just something i put together and tested on my own eggy and it worked

cant blame a begginer for trying
User avatar
speechles
Revered One
Posts: 1398
Joined: Sat Aug 26, 2006 10:19 pm
Location: emerald triangle, california (coastal redwoods)

Post by speechles »

Edit: nml375 beat me to a few things.. but he missed a few as well..

Code: Select all

set reason [lrange [split $arg] 0 end]
The code above is pointless, and will expose list bracings because it's also flawed. You forgot to [join] the list which [lrange] returns. If you want the entire line of user input, then just use $arg. There is no need to put all this extra superfluous code around it

Code: Select all

set reason $arg
This part also caught my attention...

Code: Select all

  set username [lrange [split $arg] 0 end] 
  putserv "AWAY"
  puthelp "NOTICE $nick $username Is no longer marked as away" 
What is the purpose of username? It's also superfluous, so instead make it like below.

Code: Select all

putserv "AWAY"
puthelp "NOTICE $nick :$::botnick is no longer marked as away"
You cannot set the status of another user to back, only yourself, ie. the bot. The addition of time is also easily doable, but this would involve giving public away messages with timers which I personally abhor.

You may also want to look at this post as well for reading away messages automatically.
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

No blame being thrown here, simply asking the questions.

In any case, if you simply wish to use whatever the user writes after the away command as the away-reason, use $arg instead of $reason:

Code: Select all

proc cmd:away {nick uhost hand arg} {
  putserv "AWAY :$arg"
}
You should consider adding some security checks to only allow trusted people to use the command (should make for a good next step).

And speechles, I did cover the list part :p
NML_375
b
blake
Master
Posts: 201
Joined: Mon Feb 23, 2009 9:42 am
Contact:

Post by blake »

Have changed the above to your recommendations thanks for the input :D
d
dec
Voice
Posts: 12
Joined: Thu Nov 26, 2009 2:37 pm

Post by dec »

thank you so much all..
script work great.. nice work for all of you..
d
dec
Voice
Posts: 12
Joined: Thu Nov 26, 2009 2:37 pm

Post by dec »

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..
b
blake
Master
Posts: 201
Joined: Mon Feb 23, 2009 9:42 am
Contact:

Post by blake »

dec 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..
Try this script from the archive botaway.tcl

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>" 
d
dec
Voice
Posts: 12
Joined: Thu Nov 26, 2009 2:37 pm

Post by dec »

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. :( :cry:
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* :D
b
blake
Master
Posts: 201
Joined: Mon Feb 23, 2009 9:42 am
Contact:

Post by blake »

Try the forums or tcl archive for uptime scripts
User avatar
speechles
Revered One
Posts: 1398
Joined: Sat Aug 26, 2006 10:19 pm
Location: emerald triangle, california (coastal redwoods)

Post by speechles »

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. :( :cry:
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* :D
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.
d
dec
Voice
Posts: 12
Joined: Thu Nov 26, 2009 2:37 pm

Post by dec »

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.
hai there speechles,
yes.. that what i intend to do with.. can you help me with, or is there some script can showing that UPTIME replay.

what i mean for the uptime output which is come from the local machine (shell) to show how many day/hour is the bot up.

i got this from one of the other egg script cannot work :(

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)"
}
}
then the bot will show some information like this..

-
Mybots is mybot@something.to.spoof.of.com * «« Guard Bot »»
Mybots on @#channel
Mybots using irc.network.net
Mybots is away: «« Guard Bot »» Ver. 1.2b [UpTImE 11 days, 03:21 Hrs] (i'am away)
Mybots End of /WHOIS list.
-

still stuck with that.. can you help me..
thank you so much..
d
dec
Voice
Posts: 12
Joined: Thu Nov 26, 2009 2:37 pm

Post by dec »

finally,
i got working tcl from friend of mine.
credit to byval/jojo for this TCL
script language in bahasa.
lot of cendol for you jojo.. :wink:

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"
Post Reply