end
def flag!
- auto_silence_account!
auto_report_status!
end
text.gsub(/\s+/, ' ').strip
end
- def auto_silence_account!
- @account.silence!
- end
-
def auto_report_status!
status_ids = Status.where(visibility: %i(public unlisted)).where(id: matching_status_ids).pluck(:id) + [@status.id] if @status.distributable?
ReportService.new.call(Account.representative, @account, status_ids: status_ids, comment: I18n.t('spam_check.spam_detected_and_silenced'))
end
def already_flagged?
- @account.silenced?
+ @account.silenced? || @account.targeted_reports.unresolved.where(account_id: -99).exists?
end
def trusted?
end
def unsilence!
- update!(silenced_at: nil, trust_level: trust_level == TRUST_LEVELS[:untrusted] ? TRUST_LEVELS[:trusted] : trust_level)
+ update!(silenced_at: nil)
end
def suspended?
def process_action!
case type
+ when 'none'
+ handle_resolve!
when 'disable'
handle_disable!
when 'silence'
end
end
+ def handle_resolve!
+ if with_report? && report.account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
+ # This is an automated report and it is being dismissed, so it's
+ # a false positive, in which case update the account's trust level
+ # to prevent further spam checks
+
+ target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
+ end
+ end
+
def handle_disable!
authorize(target_account.user, :disable?)
log_action(:disable, target_account.user)
title: Custom terms of service
site_title: Server name
spam_check_enabled:
- desc_html: Mastodon can auto-silence and auto-report accounts that send repeated unsolicited messages. There may be false positives.
+ desc_html: Mastodon can auto-report accounts that send repeated unsolicited messages. There may be false positives.
title: Anti-spam automation
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
described_class.new(status2).flag!
end
- it 'silences the account' do
- expect(sender.silenced?).to be true
- end
-
it 'creates a report about the account' do
expect(sender.targeted_reports.unresolved.count).to eq 1
end