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.
Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
BigToe
Halfop
Posts: 99 Joined: Thu Dec 30, 2010 4:49 pm
Post
by BigToe » Sat Oct 12, 2013 8:35 am
Hello
I need a script that I can define a message to be sent out at an interval of every few minutes defined by me to a chat room, and it expires when the time is over.
Here is an example:
Defined channel is: #england
!timer 60 12.10.2013 12:00 This message will be sent out to #England every 60 minutes untill October 12th at 12:00
Help. thanks.
willyw
Revered One
Posts: 1204 Joined: Thu Jan 15, 2009 12:55 am
Post
by willyw » Sun Oct 13, 2013 1:57 pm
Code: Select all
## October 12, 2013
### http://forum.egghelp.org/viewtopic.php?t=19527
## Set channel here
set defined_chan "#eggdrop"
bind pub - "!timer" timed_announcer
proc timed_announcer {nick uhost handle chan text} {
global defined_chan
if {$chan != $defined_chan} {
return 0
}
if {$text == ""} {
putserv "privmsg $defined_chan :Sytax: !timer <interval> <DD.MM.YYYY> <HH:MM> <message text>"
return 0
}
set announce_interval [lindex [split $text] 0]
set expire_date [lindex [split $text] 1]
set expire_time [lindex [split $text] 2]
set announce_text [lrange [split $text] 3 end]
reset_timed_announce $announce_interval $expire_date $expire_time $announce_text
putserv "privmsg $nick :Timer started. Interval = $announce_interval Expiration date = $expire_date Expiration time = $expire_time"
putserv "privmsg $nick :Text to be announced: $announce_text"
}
proc reset_timed_announce {announce_interval expire_date expire_time announce_text} {
global defined_chan
putserv "privmsg $defined_chan :$announce_text"
set expire_hour [lindex [split $expire_time :] 0]
set expire_minute [lindex [split $expire_time :] 1]
set quit_time [clock scan "$expire_date $expire_hour $expire_minute" -format %e.%N.%Y%H%M]
if {$quit_time > [unixtime]} {
timer $announce_interval [list reset_timed_announce $announce_interval $expire_date $expire_time $announce_text]
return 0
} else {
return 0
}
}
Tested only briefly.
Give it a good test.
I suspect that there are other ways to do this. It will be interesting to see what else you get here.
I hope this helps.
BigToe
Halfop
Posts: 99 Joined: Thu Dec 30, 2010 4:49 pm
Post
by BigToe » Sun Oct 13, 2013 2:13 pm
Hi willyw,
Thanks for the code.
I have one problem though:
Code: Select all
[
Tcl error [timed_announcer]: bad switch "-format": must be -base or -gmt
/code]
My Input was:
!timer 240 13.10.2013 20:00 message here
What did I do wrong? it seems to fit the syntax according to the script..?
willyw
Revered One
Posts: 1204 Joined: Thu Jan 15, 2009 12:55 am
Post
by willyw » Sun Oct 13, 2013 2:28 pm
In partyline, do:
.status
and see the version of TCL
The bot I ran it on is:
Tcl version: 8.5.8 (header version 8.5.8 )
I wonder if that could be it.
Perhaps you are using 8.4 ... I'd have to go look it up, but I'm thinking that the clock command options changed from 8.4 to 8.5
BigToe
Halfop
Posts: 99 Joined: Thu Dec 30, 2010 4:49 pm
Post
by BigToe » Sun Oct 13, 2013 2:41 pm
Indeed you are right,
Tcl version: 8.4.19 (header version 8.4.19)