diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/autoreminder.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/autoreminder.pl')
| -rw-r--r-- | scripts/autoreminder.pl | 147 | 
1 files changed, 147 insertions, 0 deletions
| diff --git a/scripts/autoreminder.pl b/scripts/autoreminder.pl new file mode 100644 index 0000000..3548b28 --- /dev/null +++ b/scripts/autoreminder.pl @@ -0,0 +1,147 @@ +##################### +# +# irssi autoreminder script. +# Copyright (C) Terry Lewis +# Terry Lewis <mrkennie@kryogenic.co.uk> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. +# +##################### +# +# Auto reminder script for irssi +# This is really a first attempt at an irssi script, +# really more of a hack I suppose, to auto remind  +# someone at certain intervals. +# It will not remind at every interval defined, so its  +# kinda less annoying, but hopefully effective. +# +# To start: +#     /start <nick> <"reminder message"> [interval]  +#     (<> = required, [] = optional) +# reminder Message must use "" parenthasis. +# +# to stop reminding use /stop +# +# I know the code is not fantastic but I will appreciate +# any patches for improvements, just mail them to me if +# you do improve it :) +# +# I use a rather nice script called cron.pl by Piotr  +# Krukowiecki which I found at http://www.irssi.org/scripts/ +# so I can start and stop the script at certain times. +# I hope someone finds this useful, Enjoy =) +# +##################### + +use strict; +use vars qw($VERSION %IRSSI); + +use Irssi; +$VERSION = '0.01'; +%IRSSI = ( +    authors     => 'Terry Lewis', +    contact     => 'terry@kryogenic.co.uk', +    name        => 'Auto Reminder', +    description => 'This script ' . +                   'Reminds people ' . +                   'to do stuff! :)', +    license     => 'GPLv2', +); + +my($timeout_tag, $timeout, $state, @opts, $date, @time, @hour, $start_hour, $end_hour); + + +#default state 0 meaning we are not started yet +$state = 0; + + +# /start <nick> <"message"> [interval] +sub cmd_start { +    if($state != 1){ +        my($data,$server,$channel) = @_; +        @opts = split(/\s\B\"(.*)\b\"/, $data); +	 +	if($opts[0] ne ''){   +	    if($opts[1] ne ''){ +	        if($opts[0] =~ /\s/g){ +	            Irssi::print("Invalid username"); +            	}elsif($opts[1] eq ''){ +	            Irssi::print("You must type a message to send"); +                }else{ +	         +	            $state = 1; + +	            if($opts[2] =~ /[0-9]/g){ +		        $opts[2] =~ s/\s//g; +		        $timeout = $opts[2]; +                        timeout_init($timeout); +	            }else{ +		        Irssi::print("Invalid interval value, using defaults (15mins)") unless $opts[2] eq ''; +		        $timeout = "900000"; +		        timeout_init($timeout); +		    } +		    Irssi::print "Bugging $opts[0] with message \"$opts[1]\" every \"$timeout ms\""; +	        } +            }else{ +	         Irssi::print ("Usage: /start nick \"bug_msg\" [interval] (interval is optional)"); +	    } +	}else{ +	    Irssi::print ("Usage: /start nick \"bug_msg\" [interval] (interval is optional)"); +	} +	 +    }else{ +        Irssi::print "Already started"; +    } +} + +# /stop +sub cmd_stop { +    if($state == 1){ +        $state = 0; +	Irssi::print "No longer bugging $opts[0]"; +	Irssi::timeout_remove($timeout_tag); +	$timeout_tag = undef; +    }else{ +      Irssi::print "Not started"; +    } +} + +sub timeout_init { +    if($state == 1){ +     +        Irssi::timeout_remove($timeout_tag); +        $timeout_tag = undef; +        $timeout_tag = Irssi::timeout_add($timeout, "remind_them", ""); +    } +} + +sub remind_them { +    if($state == 1){ +        my (@servers) = Irssi::servers();     +         +	# make it random, so we dont remind at every defined interval +        my $time = rand()*3; + +        if($time < 1){ +            $servers[0]->command("MSG $opts[0] Hi, this is an automated reminder, $opts[1]"); +	} +        timeout_init($timeout); +    } +} + + +Irssi::command_bind('start', \&cmd_start); +Irssi::command_bind('stop', \&cmd_stop); + | 
