#!/usr/bin/perl package Triggers; use cybot; %reactions = (); %reactions = read_triggers(); print "(",scalar keys %reactions,")..."; register_command("trigger",\&cmd_trigger, "Register triggers (list: list all triggers) (add : adds trigger)"); sub read_triggers{ my ($chan) = @_; my %reactions = (); open TRIGGERS, "data/triggers" or die "file error!"; while () { chomp; $reactions{$1} = $2 if /([^:]+):(.*)/; } close TRIGGERS; return %reactions; } sub cmd_trigger { my ($bot,$chan,$nick,$host, @commands) = @_; my $command = lc($commands[0]); if ($command eq "add"){ $reactions{$commands[1]} = join(" ",@commands[2 .. $#commands]); write_triggers(); $bot->message($chan, "trigger for $commands[1] added."); } elsif ($command eq "del") { $bot->message($chan, "trigger delection unauthorized."); #delete($reactions{$commands[1]}); #write_triggers(); #$bot->message($chan, "trigger for $commands[1] removed."); } elsif ($command eq "list") { my ($key,$val); while (($key, $val) = each(%reactions)){ $bot->notice($nick, "trigger: $key; reaction: $val"); } } elsif ($command eq "reload") { %reactions = read_triggers($chan); } elsif ($command eq "write") { write_triggers(); $bot->message($chan, "triggers written"); } } sub write_triggers { open TRIGGERS, ">data/triggers"; while (my ($key, $val) = each(%reactions)) { print TRIGGERS "$key:$val\n"; } close TRIGGERS; } 1;