mirror of
https://github.com/pragma-/pbot.git
synced 2025-02-09 02:54:23 +01:00
Make channel argument optional for factadd, factrem and factchange (other fact commands eventually...)
This commit is contained in:
parent
121de07ae2
commit
74fe574332
@ -47,7 +47,7 @@ my %factoid_metadata_levels = (
|
|||||||
locked => 10,
|
locked => 10,
|
||||||
add_nick => 10,
|
add_nick => 10,
|
||||||
nooverride => 10,
|
nooverride => 10,
|
||||||
effective_level => 20,
|
'effective-level' => 20,
|
||||||
# all others are allowed to be factset by anybody/default to level 0
|
# all others are allowed to be factset by anybody/default to level 0
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -545,15 +545,23 @@ sub add_regex {
|
|||||||
sub factadd {
|
sub factadd {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($from, $nick, $user, $host, $arguments) = @_;
|
my ($from, $nick, $user, $host, $arguments) = @_;
|
||||||
my ($from_chan, $keyword, $text) = $arguments =~ /^(\S+)\s+(\S+)\s+(?:is\s+)?(.*)$/i if defined $arguments;
|
my ($from_chan, $keyword, $text);
|
||||||
|
|
||||||
|
if (defined $arguments) {
|
||||||
|
if ($arguments =~ /^(#\S+)\s+(\S+)\s+(?:is\s+)?(.*)$/i) {
|
||||||
|
($from_chan, $keyword, $text) = ($1, $2, $3);
|
||||||
|
} elsif ($arguments =~ /^(\S+)\s+(?:is\s+)?(.*)$/i) {
|
||||||
|
($from_chan, $keyword, $text) = ($from, $1, $2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(not defined $from_chan or not defined $text or not defined $keyword) {
|
if(not defined $from_chan or not defined $text or not defined $keyword) {
|
||||||
return "Usage: factadd <channel> <keyword> is <factoid>";
|
return "Usage: factadd [channel] <keyword> <factoid>";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($from_chan !~ /^#/) {
|
if ($from_chan !~ /^#/) {
|
||||||
if (lc $from_chan ne 'global' and $from_chan ne '.*') {
|
if (lc $from_chan ne 'global' and $from_chan ne '.*') {
|
||||||
return "Usage: factadd <channel> <keyword> <text>";
|
return "Usage: factadd [channel] <keyword> <text>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -593,11 +601,11 @@ sub factrem {
|
|||||||
|
|
||||||
if (not defined $from_trigger) {
|
if (not defined $from_trigger) {
|
||||||
$from_trigger = $from_chan;
|
$from_trigger = $from_chan;
|
||||||
$from_chan = '.*';
|
$from_chan = $from;
|
||||||
$needs_disambig = 1;
|
#$needs_disambig = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$from_chan = '.*' if $from_chan eq 'global';
|
$from_chan = '.*' if $from_chan !~ /^#/;
|
||||||
|
|
||||||
$from_chan = lc $from_chan;
|
$from_chan = lc $from_chan;
|
||||||
|
|
||||||
@ -636,6 +644,10 @@ sub factrem {
|
|||||||
return "$trigger is not a factoid.";
|
return "$trigger is not a factoid.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($channel =~ /^#/ and $from_chan =~ /^#/ and $channel ne $from_chan) {
|
||||||
|
return "$trigger belongs to $channel, but this is $from_chan. Please switch to $channel or /msg to remove this factoid.";
|
||||||
|
}
|
||||||
|
|
||||||
my ($owner) = $factoids->{$channel}->{$trigger}->{'owner'} =~ m/([^!]+)/;
|
my ($owner) = $factoids->{$channel}->{$trigger}->{'owner'} =~ m/([^!]+)/;
|
||||||
|
|
||||||
if((lc $nick ne lc $owner) and (not $self->{pbot}->{admins}->loggedin($channel, "$nick!$user\@$host"))) {
|
if((lc $nick ne lc $owner) and (not $self->{pbot}->{admins}->loggedin($channel, "$nick!$user\@$host"))) {
|
||||||
@ -1128,33 +1140,41 @@ sub factchange {
|
|||||||
my $factoids = $self->{pbot}->{factoids}->{factoids}->hash;
|
my $factoids = $self->{pbot}->{factoids}->{factoids}->hash;
|
||||||
my ($channel, $trigger, $keyword, $delim, $tochange, $changeto, $modifier);
|
my ($channel, $trigger, $keyword, $delim, $tochange, $changeto, $modifier);
|
||||||
|
|
||||||
if(defined $arguments) {
|
if (defined $arguments) {
|
||||||
if($arguments =~ /^([^\s]+) ([^\s]+)\s+s(.)/) {
|
if ($arguments =~ /^([^\s]+) ([^\s]+)\s+s(.)/) {
|
||||||
$channel = $1;
|
$channel = $1;
|
||||||
$keyword = $2;
|
$keyword = $2;
|
||||||
$delim = $3;
|
$delim = $3;
|
||||||
|
} elsif ($arguments =~ /^([^\s]+)\s+s(.)/) {
|
||||||
|
$keyword = $1;
|
||||||
|
$delim = $2;
|
||||||
|
$channel = $from;
|
||||||
}
|
}
|
||||||
|
|
||||||
$delim = quotemeta $delim;
|
$delim = quotemeta $delim;
|
||||||
|
|
||||||
if($arguments =~ /\Q$keyword\E s$delim(.*?)$delim(.*)$delim(.*)?$/) {
|
if ($arguments =~ /\Q$keyword\E s$delim(.*?)$delim(.*)$delim(.*)?$/) {
|
||||||
$tochange = $1;
|
$tochange = $1;
|
||||||
$changeto = $2;
|
$changeto = $2;
|
||||||
$modifier = $3;
|
$modifier = $3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(not defined $channel or not defined $changeto) {
|
if (not defined $channel or not defined $changeto) {
|
||||||
return "Usage: factchange <channel> <keyword> s/<pattern>/<replacement>/";
|
return "Usage: factchange [channel] <keyword> s/<pattern>/<replacement>/";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $chan = $channel;
|
my $chan = $channel;
|
||||||
($channel, $trigger) = $self->{pbot}->{factoids}->find_factoid($channel, $keyword, undef, 1, 1);
|
($channel, $trigger) = $self->{pbot}->{factoids}->find_factoid($channel, $keyword, undef, 1, 1);
|
||||||
|
|
||||||
if(not defined $trigger) {
|
if (not defined $trigger) {
|
||||||
return "$keyword not found in channel $chan.";
|
return "$keyword not found in channel $chan.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($channel !~ /^#/ and $chan !~ /^#/ and $channel ne $chan) {
|
||||||
|
return "$trigger belongs to $channel, but this is $chan. Please switch to $channel or use /msg to change this factoid.";
|
||||||
|
}
|
||||||
|
|
||||||
my $admininfo = $self->{pbot}->{admins}->loggedin($channel, "$nick!$user\@$host");
|
my $admininfo = $self->{pbot}->{admins}->loggedin($channel, "$nick!$user\@$host");
|
||||||
if ($factoids->{$channel}->{$trigger}->{'locked'}) {
|
if ($factoids->{$channel}->{$trigger}->{'locked'}) {
|
||||||
return "$trigger is locked and cannot be changed." if not defined $admininfo;
|
return "$trigger is locked and cannot be changed." if not defined $admininfo;
|
||||||
|
Loading…
Reference in New Issue
Block a user