make sure all commands that send a user include the full @user@domain.

This commit is contained in:
Storm Dragon
2025-07-26 02:08:51 -04:00
parent 31bf3de58d
commit a846c23741
+24 -14
View File
@@ -3199,7 +3199,7 @@ m#^/(un)?f(boost|a|av|ave|avorite|avourite)? ([zZ]?[a-zA-Z]?[0-9]+)$#) {
}
# we can't or user requested /ert /ort
$repost = "boost @" .
&descape($post->{'user'}->{'screen_name'}) .
&descape($post->{'user'}->{'acct'} || $post->{'user'}->{'screen_name'}) .
": " . &descape($post->{'text'});
if ($mode eq 'e') {
&add_history($repost);
@@ -3397,7 +3397,7 @@ m#^/(un)?f(boost|a|av|ave|avorite|avourite)? ([zZ]?[a-zA-Z]?[0-9]+)$#) {
print $stdout "-- no such post (yet?): $code\n";
return 0;
}
my $target = &descape($post->{'user'}->{'screen_name'});
my $target = &descape($post->{'user'}->{'acct'} || $post->{'user'}->{'screen_name'});
my $text = $_;
$_ = '@' . $target;
unless ($mode eq 'v') {
@@ -3411,7 +3411,7 @@ m#^/(un)?f(boost|a|av|ave|avorite|avourite)? ([zZ]?[a-zA-Z]?[0-9]+)$#) {
my %did_mentions = map { $_ => 1 } (lc($target));
my $reply_post = &descape($post->{'text'});
while($reply_post =~ s/\@(\w+)//) {
while($reply_post =~ s/\@(\w+(?:\@[\w.-]+)?)//) {
my $name = $1;
my $mame = lc($name); # preserve camel case
next if ($mame eq $whoami || $did_mentions{$mame}++);
@@ -4514,7 +4514,11 @@ sub update_effpause {
# direct messages or search, because they pull from different buckets, and
# their rate limits are roughly the same.
$effpause = 5*$rate_limit_rate;
# this will usually be 75s
# Cap refresh rate for fediverse servers (generous rate limits)
if ($effpause > 120) {
$effpause = 120; # Maximum 2 minutes for fediverse
}
# this will usually be 75s (Twitter) or 120s (fediverse cap)
# for lists, however, we have to drain the list bucket faster, so for every
# list AFTER THE FIRST ONE we subscribe to, add rate_limit_rate to slow.
# for search, it has 180 requests, so we don't care so much. if this
@@ -4563,6 +4567,15 @@ sub update_effpause {
# } else {
# $rate_limit_next-- unless ($anonymous);
# }
# Fediverse fallback: ensure auto-refresh works even if rate limiting fails
if (defined($pause) && $pause eq 'auto' && (!defined($effpause) || $effpause == 0)) {
$effpause = 120; # 2 minutes - consistent with fediverse cap
print $stdout "-- using fallback refresh rate: $effpause seconds\n";
}
# Debug: always show current effpause value
print $stdout "-- current effpause: " . (defined($effpause) ? $effpause : 'undefined') . " seconds\n" if ($verbose);
}
# streaming API support routines
@@ -5663,7 +5676,7 @@ sub standardpost {
my $ref = shift;
my $nocolour = shift;
my $sn = &descape($ref->{'user'}->{'screen_name'});
my $sn = &descape($ref->{'user'}->{'acct'} || $ref->{'user'}->{'screen_name'});
my $post = &descape($ref->{'text'});
# Debug boost display
@@ -5776,8 +5789,8 @@ sub standardevent {
# ActivityPub streaming API messages
if (length($verb)) { # see below for server-level events
my $tar_sn = '@'.&descape($ref->{'target'}->{'screen_name'});
my $sou_sn = '@'.&descape($ref->{'source'}->{'screen_name'});
my $tar_sn = '@'.&descape($ref->{'target'}->{'acct'} || $ref->{'target'}->{'screen_name'});
my $sou_sn = '@'.&descape($ref->{'source'}->{'acct'} || $ref->{'source'}->{'screen_name'});
my $tar_list_name = '';
my $tar_list_desc = '';
@@ -6123,7 +6136,7 @@ sub defaulthandle {
my $post_ref = shift;
my $class = shift;
my $dclass = ($verbose) ? "{$class,$post_ref->{'id_str'}} " : '';
my $sn = &descape($post_ref->{'user'}->{'screen_name'});
my $sn = &descape($post_ref->{'user'}->{'acct'} || $post_ref->{'user'}->{'screen_name'});
my $post = &descape($post_ref->{'text'});
# Debug: Check what data defaulthandle receives for boost posts
@@ -6174,7 +6187,7 @@ sub sendnotifies { # this is a default subroutine of a sort, right?
my $post_ref = shift;
my $class = shift;
my $sn = &descape($post_ref->{'user'}->{'screen_name'});
my $sn = &descape($post_ref->{'user'}->{'acct'} || $post_ref->{'user'}->{'screen_name'});
my $post = &descape($post_ref->{'text'});
# interactive? first time?
@@ -7599,14 +7612,11 @@ sub normalizejson {
$i->{'reblog'} = $rt;
# Get original author and content
my $original_author = $rt->{'user'}->{'screen_name'} || 'unknown_user';
my $original_author = $rt->{'user'}->{'acct'} || $rt->{'user'}->{'screen_name'} || 'unknown_user';
my $content = $rt->{'text'} || '';
# Get booster (who shared this)
my $booster = $i->{'user'}->{'screen_name'} || 'unknown_booster';
if (exists($i->{'user'}->{'acct'})) {
$booster = $i->{'user'}->{'acct'};
}
my $booster = $i->{'user'}->{'acct'} || $i->{'user'}->{'screen_name'} || 'unknown_booster';
print $stdout "-- DEBUG: Boost - original: '$original_author', booster: '$booster', content: '$content'\n" if ($verbose);