mirror of
https://github.com/pragma-/pbot.git
synced 2024-12-24 11:42:35 +01:00
MessageHistory: recall
: -h and -t separated into distinct flags; -t no longer does integral indexing
This commit is contained in:
parent
e05f6fb6c0
commit
e0f4e9cdd5
@ -236,20 +236,21 @@ sub cmd_recall_message {
|
|||||||
chomp $getopt_error;
|
chomp $getopt_error;
|
||||||
};
|
};
|
||||||
|
|
||||||
my $recall_text = '';
|
my $result = '';
|
||||||
Getopt::Long::Configure("bundling_override");
|
Getopt::Long::Configure("bundling_override");
|
||||||
|
|
||||||
# global state
|
# global state
|
||||||
my ($recall_channel, $raw, $random);
|
my ($recall_channel, $raw, $random);
|
||||||
|
|
||||||
foreach my $recall (@recalls) {
|
foreach my $recall (@recalls) {
|
||||||
my ($recall_nick, $recall_history, $recall_before, $recall_after, $recall_context, $recall_count);
|
my ($recall_nick, $recall_text, $recall_history, $recall_before, $recall_after, $recall_context, $recall_count);
|
||||||
|
|
||||||
my @opt_args = $self->{pbot}->{interpreter}->split_line($recall, strip_quotes => 1);
|
my @opt_args = $self->{pbot}->{interpreter}->split_line($recall, strip_quotes => 1);
|
||||||
GetOptionsFromArray(
|
GetOptionsFromArray(
|
||||||
\@opt_args,
|
\@opt_args,
|
||||||
'channel|c:s' => \$recall_channel,
|
'channel|c:s' => \$recall_channel,
|
||||||
'text|t|history|h:s' => \$recall_history,
|
'history|h:s' => \$recall_history,
|
||||||
|
'text|t:s' => \$recall_text,
|
||||||
'before|b:i' => \$recall_before,
|
'before|b:i' => \$recall_before,
|
||||||
'after|a:i' => \$recall_after,
|
'after|a:i' => \$recall_after,
|
||||||
'count|n:i' => \$recall_count,
|
'count|n:i' => \$recall_count,
|
||||||
@ -260,12 +261,30 @@ sub cmd_recall_message {
|
|||||||
|
|
||||||
return "/say $getopt_error -- $usage" if defined $getopt_error;
|
return "/say $getopt_error -- $usage" if defined $getopt_error;
|
||||||
|
|
||||||
|
if (defined $recall_history and defined $recall_history) {
|
||||||
|
return "/say $context->{nick}: The -h and -t options cannot be used together.";
|
||||||
|
}
|
||||||
|
|
||||||
|
# we swap these $recall variables around so much later on that we
|
||||||
|
# need to remember which flags were explicitly set...
|
||||||
my $channel_arg = 1 if defined $recall_channel;
|
my $channel_arg = 1 if defined $recall_channel;
|
||||||
my $history_arg = 1 if defined $recall_history;
|
my $history_arg = 1 if defined $recall_history;
|
||||||
|
|
||||||
$recall_nick = shift @opt_args if @opt_args;
|
$recall_nick = shift @opt_args if @opt_args;
|
||||||
$recall_history = shift @opt_args if @opt_args and not $history_arg;
|
$recall_history = shift @opt_args if @opt_args and not $history_arg and not defined $recall_text;
|
||||||
$recall_channel = "@opt_args" if @opt_args and not $channel_arg;
|
|
||||||
|
if (not $channel_arg) {
|
||||||
|
$recall_channel = "@opt_args" if @opt_args;
|
||||||
|
} else {
|
||||||
|
if (defined $recall_history) {
|
||||||
|
$recall_history .= ' ';
|
||||||
|
}
|
||||||
|
$recall_history .= "@opt_args" if @opt_args;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined $recall_text and not defined $recall_history) {
|
||||||
|
$recall_history = $recall_text;
|
||||||
|
}
|
||||||
|
|
||||||
$recall_count = 1 if (not defined $recall_count) || ($recall_count <= 0);
|
$recall_count = 1 if (not defined $recall_count) || ($recall_count <= 0);
|
||||||
return "You may only select a count of up to 100 messages." if $recall_count > 100;
|
return "You may only select a count of up to 100 messages." if $recall_count > 100;
|
||||||
@ -333,7 +352,7 @@ sub cmd_recall_message {
|
|||||||
|
|
||||||
if ($random) {
|
if ($random) {
|
||||||
$message = $self->{database}->get_random_message($account, $recall_channel);
|
$message = $self->{database}->get_random_message($account, $recall_channel);
|
||||||
} elsif ($recall_history =~ /^\d+$/) {
|
} elsif ($recall_history =~ /^\d+$/ and not defined $recall_text) {
|
||||||
# integral history
|
# integral history
|
||||||
if (defined $account) {
|
if (defined $account) {
|
||||||
my $max_messages = $self->{database}->get_max_messages($account, $recall_channel);
|
my $max_messages = $self->{database}->get_max_messages($account, $recall_channel);
|
||||||
@ -375,8 +394,8 @@ sub cmd_recall_message {
|
|||||||
foreach my $msg (@$messages) {
|
foreach my $msg (@$messages) {
|
||||||
if ($max_recall_time && gettimeofday - $msg->{timestamp} > $max_recall_time && not $self->{pbot}->{users}->loggedin_admin($context->{from}, $context->{hostmask})) {
|
if ($max_recall_time && gettimeofday - $msg->{timestamp} > $max_recall_time && not $self->{pbot}->{users}->loggedin_admin($context->{from}, $context->{hostmask})) {
|
||||||
$max_recall_time = duration($max_recall_time);
|
$max_recall_time = duration($max_recall_time);
|
||||||
$recall_text .= "Sorry, you can not recall messages older than $max_recall_time.";
|
$result .= "Sorry, you can not recall messages older than $max_recall_time.";
|
||||||
return $recall_text;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $text = $msg->{msg};
|
my $text = $msg->{msg};
|
||||||
@ -388,16 +407,16 @@ sub cmd_recall_message {
|
|||||||
or $text =~ s/^(JOIN|PART)\b/lc "$1ed"/e)
|
or $text =~ s/^(JOIN|PART)\b/lc "$1ed"/e)
|
||||||
{
|
{
|
||||||
$text =~ s/^(quit) (.*)/$1 ($2)/; # fix ugly "[nick] quit Quit: Leaving."
|
$text =~ s/^(quit) (.*)/$1 ($2)/; # fix ugly "[nick] quit Quit: Leaving."
|
||||||
$recall_text .= $raw ? "$text\n" : "[$ago] $msg->{nick} $text\n";
|
$result .= $raw ? "$text\n" : "[$ago] $msg->{nick} $text\n";
|
||||||
} elsif ($text =~ s/^\/me\s+//) {
|
} elsif ($text =~ s/^\/me\s+//) {
|
||||||
$recall_text .= $raw ? "$text\n" : "[$ago] * $msg->{nick} $text\n";
|
$result .= $raw ? "$text\n" : "[$ago] * $msg->{nick} $text\n";
|
||||||
} else {
|
} else {
|
||||||
$recall_text .= $raw ? "$text\n" : "[$ago] <$msg->{nick}> $text\n";
|
$result .= $raw ? "$text\n" : "[$ago] <$msg->{nick}> $text\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $recall_text;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub cmd_rebuild_aliases {
|
sub cmd_rebuild_aliases {
|
||||||
|
Loading…
Reference in New Issue
Block a user